Submission #643338

#TimeUsernameProblemLanguageResultExecution timeMemory
643338Matteo_VerzPresent (RMI21_present)C++17
8 / 100
1477 ms8844 KiB
#include <bits/stdc++.h>
#ifdef BLAT
   #include "debug/debug.hpp"
#else
   #define debug(x...)
#endif

using namespace std;

void generateNextSet(long long &mask) {
    for (int i = 1; i <= 40; i++) {
        mask ^= (1LL << i);
        if (mask & (1LL << i))
            break;
    }

    long long gcd = 0;
    for (int i = 1; i <= 40; i++)
        for (int j = i + 1; j <= 40; j++)
            if ((mask & (1LL << i)) && (mask & (1LL << j)))
                gcd |= (1LL << (__gcd(i, j)));

    for (int i = 40; i >= 1; i--)
        if (gcd & (1LL << i))
            mask |= (1LL << i);
}

void printSet(long long set, int setidx) {
    // cout << "S" << setidx << " = ";
    cout << __builtin_popcountll(set) << ' ';
    for (int i = 1; i <= 40; i++)
        if (set & (1LL << i))
            cout << i << ' ';
    cout << '\n';
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    long long set = 2;
    vector <long long> sets = {0};
    for (int i = 1; i <= 1000000; i++) {
        sets.push_back(set);
        generateNextSet(set);
    }

    int t;
    cin >> t;
    while (t--) {
        int k;
        cin >> k;
        printSet(sets[k], k);
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...