// 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; for (k = 1; k <= KMAX; k++) { a = k*(k+1) >> 1; f[a] = 1, t[sz++] = a; } scanf("%d", &N); if (f[N]) { puts("1"); return 0; } a = N >> 1; for (k = 0; t[k] <= a; k++) { if (f[N-t[k]]) { puts("2"); return 0; } } puts("3"); return 0; }