#include #define BAD_ARGS 1 int main(int argc, char *argv[]) { static char buf[1000000]; int initial; const int extra = 10; const int slop = 1; const int terminator = 1; int error = BAD_ARGS; if ( argc > 1 && sscanf(argv[1], "%d", &initial) == 1 && initial + extra + slop + terminator <= sizeof buf ) { char *p = buf, *q = buf+1; // elves char *r = buf+2; // next recipe score char *s = buf+initial; // specified count char *t = s+extra; // termination count char score; error = 0; *p = '3'; *q = '7'; do { if (0) printf("%4d %4d %4d %4d %4d %s\n", p - buf, q - buf, r - buf, s - buf, t - buf, buf ); score = *p + *q - '0'; if (score <= '9') *r++ = score; else { *r++ = '1'; *r++ = score - 10; } p += *p - '0' + 1; q += *q - '0' + 1; while (p >= r) p -= (r - buf); while (q >= r) q -= (r - buf); } while (r < t); printf("%.*s\n", extra, s); } return error; }