#include #include long long rebase(long long n, long long b1, long long b2) { long long r = 0; long long p2 = 1; while (n) { r += p2 * (n%b1); n /= b1; p2 *= b2; } return r; } long long cyclop(long long n, long long base) { long long l = 0; long long r = n-1; long long b1 = 1; // (base-1)^l long long b = 1; // base ^l while (r>=b1*b1) { r -= b1*b1; l++; b1 *= base-1; b *= base; } long long p = r / b1; long long q = r % b1; return b * base * ( (b-1)/(base-1) + rebase(p, base-1, base) ) + ( (b-1)/(base-1) + rebase(q, base-1, base) ); } #define MAX 1000000 char count[MAX]; long long least[100]; int main() { memset(count, 0, sizeof(count)); for (long long base=2; cyclop(2, base)MAX) { break; } count[cyc]++; } } memset(least, 0, sizeof(least)); for (long long n=1; n