問題概要
N個の珠が一列に並んだそろばんがある。上と下にそろばんを分けるとき、適切な分け方をすると最大どれだけの数字を表現できるか。
$N\leqq10^6$
解法
式変形をして$O(1)$か、
全部のパターンをシュミレーションすれば良い。
計算量:$O(N)$
ソース
#include <bits/stdc++.h> using namespace std; using VS = vector<string>; using LL = long long; #define FOR(i, s, e) for (int(i) = (s); (i) < (e); (i)++) int main() { cin.tie(0); ios_base::sync_with_stdio(false); int N; cin >> N; LL ans = 0; FOR(i, 0, N) {// i:=上の数 LL under = N - i; ans = max(ans, (i + 1)*(under + 1) - 1); } cout << ans << "\n"; return 0; }