#include #include int main() { int r5 = 0; int r3 = 0; int prev; static uint64_t seen[0x40000]; int count = 0; do { seen[r5 >> 6] |= 1LL << (r5 & 0x3f); prev = r5; r3 = r5 | 0x10000; r5 = 9010242; for (;;) { r5 += (r3 & 0xff); r5 &= 0xffffff; r5 *= 65899; r5 &= 0xffffff; if (r3 < 0x100) break; r3 = r3 / 0x100; } count++; } while (!(seen[r5 >> 6] & (1LL << (r5 & 0x3f)))); printf("%d -> %d (%d)\n", prev, r5, count); return 0; }