#include #include using namespace std; int main() { int N; cin >> N; set triangularNumbers; for (int k = 1; k * (k + 1) / 2 <= N; k++) { triangularNumbers.insert(k * (k + 1) / 2); } // 三角数定理よりNはたかだか3つの整数の和で表すことができる int answer = 3; if (triangularNumbers.count(N) > 0) { answer = 1; } else { for (int n : triangularNumbers) { if (triangularNumbers.count(N - n) > 0) { answer = 2; break; } } } cout << answer << endl; return 0; }