[AtCoder] ARC 109 B – log
問題
方針
\( n + 1 \) の長さの丸太を切断することを考えます。
\[ 1 + 2 + \cdots + m \leq n + 1\]
を満たす最大の \( m \) を求めると、\( n + 1 – m \) 本の丸太を買えば良いです。
コード
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll n; cin >> n; ll l = -1; ll r = 2 * (sqrt(n) + 100); while (r - l > 1) { ll m = l + (r - l) / 2; if (m * (m + 1) <= 2 * n + 2) { l = m; } else { r = m; } } cout << n + 1 - l << "\n"; return 0; }
ディスカッション
コメント一覧
まだ、コメントがありません