#include #include #include #include using namespace std; #define MAX (1LL<<30) bitset *seen = 0; vector cc; long long index(long long x, long long y) { long long mi, mx; if (x=MAX) { exit(1); } return i; } long long other(long long p) { for (long long v=1;; v++) { if (p & v) { long long i = index(p,v); if (!seen->test(i)) { seen->set(i); return v; } } } } int main() { seen = new bitset; cc.resize(1); long long v = 1; for (long long n=0; n<10000; n++) { cout << n << ' ' << v << endl; v = other(v); } delete seen; return 0; }