// yukicoder: No.634 硬貨の枚数1 // 2019.5.1 bal4u #include #define KMAX 4471 // 4471*4472/2 = 9997156 char f[10000005]; int t[KMAX+5], sz; int main() { int a, k, N; sz = 0, a = 1, k = 1; while (k <= KMAX) { f[a] = 1, t[sz++] = a, a += ++k; } scanf("%d", &N); if (f[N]) { puts("1"); return 0; } for (k = 1; t[k] <= N/2; k++) { if (f[N-t[k]]) { puts("2"); return 0; } } puts("3"); return 0; }