Guest User

Untitled

a guest
Jun 7th, 2015
379
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.30 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <algorithm>
  3. #include <string.h>
  4. using namespace std;
  5.  
  6. void print(int bits, int n) {
  7.     for (int i = 0; i < n; i++) {
  8.         printf("%d ", (bits >> i) & 1);
  9.     }
  10.     printf("\n\n");
  11.     return;
  12. }
  13.  
  14. int valid(int mask, int k, int n) {
  15.     int bad[30];
  16.     int bit;
  17.  
  18.     if (k == 1) {
  19.         return 0;
  20.     }
  21.  
  22.     memset(bad, 0, sizeof(bad));
  23.  
  24.     for (int i = 1; i <= n; i++) {
  25.         bit = (mask >> (i - 1)) & 1;
  26.         if (bit) {
  27.             if (bad[i]) {
  28.                 return 0;
  29.             } else if (i * k <= n) {
  30.                 bad[i * k] = 1;
  31.             }
  32.         }
  33.     }
  34.     return 1;
  35. }
  36.  
  37. int main(void) {
  38.     //int n = 16;
  39.     int r;
  40.     int aux;
  41.     int bits;
  42.  
  43.     for (int n = 1; n <= 10; n++) {
  44.         for (int k = 1; k <= n; k++) {
  45.             r = 0;
  46.             bits = 0;
  47.             for (int mask = 1 << n; mask >= 0; mask--) {
  48.                 if (valid(mask, k, n)) {
  49.                     aux = __builtin_popcount(mask);
  50.                     if (r < aux) {
  51.                         r = aux;
  52.                         bits = mask;
  53.                     }
  54.                 }
  55.             }
  56.             printf("k = %d, r = %d - ", k, r);
  57.             print(bits, n);
  58.             printf("%d\n", r);
  59.         }
  60.     }
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment