Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <math.h>
  2. #include <vector>
  3. #include <ctime>
  4. #include <immintrin.h>
  5. #define K 6
  6. #define TARGET_N 49
  7.  
  8. __int64 printPermutations(int n, int k) {
  9.     __int64 count = 0;
  10.     std::vector<int> numbers;
  11.     __int64 limit = pow(2, n);
  12.     for (__int64 mask = 0; mask <= limit; mask++) {
  13.         if (_mm_popcnt_u64(mask) == k) {
  14.             for (int i = 0; i <= n; i++) {
  15.                 if ((mask >> i) & 1) numbers.push_back(i + 1);
  16. //              if (numbers.size() > k) break;
  17.             }
  18. //          if (numbers.size() == k) {
  19. //              for (int n : numbers)
  20. //                  printf("%d ", n);
  21. //              printf("\n");
  22.                 count++;
  23. //          }
  24.         }
  25.         numbers.clear();
  26.     }
  27.     return count;
  28.  
  29. }
  30. int main() {
  31.     for (int i = K; i < TARGET_N; i++) {
  32.         int start_s = clock();
  33.         __int64 result = printPermutations(i, 6);
  34.         int stop_s = clock();
  35.         printf("%d po 6\n", i);
  36.         printf("razem: %ld\n", result);
  37.         double time = (stop_s - start_s) / double(CLOCKS_PER_SEC) * 1000;
  38.         printf("runtime: %.0lf ms\nrate: %lf combo/s\n\n", time, (double)result / (time / 1000));
  39.     }
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement