// variant of Gijswijt's sequence // where we consider runs of consecutive terms with equal sums #include #include #define MAX 10000 // number of terms #define SFACTOR 100 // should be bigger the the average of the first MAX terms long long a[MAX]; // terms of the sequence bool seen[MAX * SFACTOR]; // true for partial sums int main() { memset(seen, 0, sizeof(seen)); seen[0] = true; // sum of the first 0 terms long long v = 1; long long t = 0; // partial sums for (int n=0; n=0; k--) { p += a[k]; if (p*v > t) { break; // no way to have a bigger value } else { // necessarily seen[t - p] == true for (long long w=2;; w++) { if (t-w*p < 0 || !seen[t-w*p]) { break; } else if (v