🔍
[鉄則B12] Equation
二分探索の考え方で値を絞っていく問題。
問題を要約する
-
x**3 + x
して N になる x は?
問題を理解する
たとえば N = 3 なら x = 1.213836669921875 を求める。
N = 3
x = 1.213836669921875
答え合わせするなら x**3 + x
してほぼ N なら合っている。
x**3 + x # => 3.002302965426651
解説の模範解答風 (AC)
N = gets.to_i
l = 0.0
r = 100.0
x = nil
until (r - l) < 0.001
x = (l + r) / 2 # x を調整していく
v = x**3 + x
if v > N
r = x # 左半分に絞る
else
l = x # 右半分に絞る
end
end
v = x**3 + x # => 3.002302965426651
(N - v).abs # => 0.0023029654266508714
p x # => 1.213836669921875
絶対誤差が 0.001 以下になってないのに通るように見えるのは、おそらく誤差がある状態で x**3
をやってしまっているからで、ジャッジには関係しないのだと思われる。
Discussion