#include using namespace std; using LL = long long; int main() { // 1. 入力情報取得. LL N; scanf("%llu", &N); // 2. そろばんの一列分で表現できる最大の数は? // k = 1 -> 1 // k = 2 -> 3 // k = 3 -> 5 // ... // k = N -> 上部 に i個, 下部に (N - i)個 あったとすると, // (N - i + 1) * i + (N - i) = ((i + 1) * N - i * i) 個 // ↓ // N = 2 * X の 場合: i = X で 最大値 (X + 1) * 2 * X - X * X = X * X + 2 * X // N = 2 * X + 1 の 場合: // i = X で 最大値 (X + 1) * (2 * X + 1) - X * X = X * X + 3 * X + 1 // i = X + 1 で 最大値 (X + 2) * (2 * X + 1) - (X + 1) * (X + 1) = X * X + 3 * X + 1 // と分かる. LL ans = 0; LL X = N / 2; if(N % 2 == 0) ans = X * X + 2 * X; else ans = X * X + 3 * X + 1; // 3. 出力 ~ 後処理. // ex. // 123456789 // -> 3810394811004419 で, OK?. printf("%llu\n", ans); return 0; }