Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <math.h>
- #include <vector>
- #include <ctime>
- #include <immintrin.h>
- #define K 6
- #define TARGET_N 49
- __int64 printPermutations(int n, int k) {
- __int64 count = 0;
- std::vector<int> numbers;
- __int64 limit = pow(2, n);
- for (__int64 mask = 0; mask <= limit; mask++) {
- if (_mm_popcnt_u64(mask) == k) {
- for (int i = 0; i <= n; i++) {
- if ((mask >> i) & 1) numbers.push_back(i + 1);
- // if (numbers.size() > k) break;
- }
- // if (numbers.size() == k) {
- // for (int n : numbers)
- // printf("%d ", n);
- // printf("\n");
- count++;
- // }
- }
- numbers.clear();
- }
- return count;
- }
- int main() {
- for (int i = K; i < TARGET_N; i++) {
- int start_s = clock();
- __int64 result = printPermutations(i, 6);
- int stop_s = clock();
- printf("%d po 6\n", i);
- printf("razem: %ld\n", result);
- double time = (stop_s - start_s) / double(CLOCKS_PER_SEC) * 1000;
- printf("runtime: %.0lf ms\nrate: %lf combo/s\n\n", time, (double)result / (time / 1000));
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement