理解したいこと
自分の書いたコードの中で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
※「競技プログラミングの鉄則 米田優峻[著]」問題B12 から引用
問題:https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_ck
解答コード:https://github.com/E869120/kyopro-tessoku/blob/main/editorial/chap03/cpp/answer_B12.cpp
--
該当のソースコード
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
![guest](/img/icon/icnUserSample.jpg)
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/07/11 13:59