なぜiの条件式がこうであるとうまくいくのか

理解したいこと

自分の書いたコードの中でi<25という条件式が出てくるのですが、なぜ25未満の数だとうまくいかないのかを理解したいです。

前提

「競技プログラミングの鉄則」という本を使って学習していて、B12の問題を解いていました。i < 10000などと大きな値をとってACしたのですが、i < xのxの部分をコードが機能する最小の値にしたいと考えいじっていたら、x >= 25で機能することが分かりました。しかし、なぜx >= 25で機能するのか分からなかったので、質問したいと考えました。

以下B12の問題です。

問題文---
正の整数 N が与えられます。
x^3+x=N を満たす正の実数
x を出力してください。ただし、相対誤差または絶対誤差が 0.001 以下であれば正解とします。

制約
1≤N≤100000
N は整数

入力
入力は以下の形式で標準入力から与えられます。

N

--

該当のソースコード

C++

1#include <bits/stdc++.h>2using namespace std;3 4double N, m;5int main() {6 cin >> N;7 double L = 0, R = 100;8 for (int i = 0; i < 25; i++) {9 m = (L + R) / 2;10 if (N < (m * m * m + m)) R = m;11 else L = m;12 }13 cout << m << endl;14}15

環境

環境は以下のものを使用しています。
https://atcoder.jp/contests/tessoku-book/custom_test

コメントを投稿

0 コメント