#include #include #include #include #include using namespace std; #define MAX (1LL<<30) #define SMALL (1LL<<35) class Arit { public: Arit(long long n, long long v) : _min(n), _mod(v), _max(n+(v-1)*v) {} bool contains(long long v) { if (v>=_min && v<=_max && (v-_min)%_mod==0) { return true; } else { return false; } } private: const long long _min; const long long _mod; const long long _max; }; bitset *small = 0; vector big; bool test(long long n) { if (ntest(n); } else { for (size_t i=0; icontains(n)) { return true; } } return false; } } map seen; #define WANTED 5001LL long long a[WANTED]; void set(long long n, long long v) { long long min = n; long long max = n + (v-1)*v; seen[v] = true; for (long long n=min; n<=max && nset(n); if (n=SMALL) { big.push_back(new Arit(n, v)); } } int main() { small = new bitset; memset(a, 0, sizeof(a)); for (long long n=1; n0; k--) { if (test(m)) { ok = false; break; } m += v; } if (ok) { set(n, v); break; } } } } if (a[n]==0) { break; } else { cout << n << ' ' << a[n] << endl; } } delete small; small = 0; for (size_t i=0; i