#include #include #define MAX 10000LL // number of terms #define VMAX (1LL<<30) // greatest product long long a[MAX]; bool *seen = 0; int main() { seen = new bool[VMAX]; memset(seen, 0, sizeof(*seen)*VMAX); for (long long n=0; n=2) ? a[n-2] : 1;; v++) { bool ok = true; for (long long k=n-1; k>=0; k-=2) { long long p = a[k]*v; if (p >= VMAX) { goto theEnd; } if (seen[p]) { ok = false; break; } } if (ok) { a[n] = v; printf("%lld %lld\n", n+1, a[n]); fflush(stdout); for (long long k=n-1; k>=0; k-=2) { long long p = a[k]*v; seen[p] = true; } break; } } } theEnd: delete[] seen; return 0; }