結果

問題 No.550 夏休みの思い出(1)
ユーザー koba-e964
提出日時 2017-07-29 00:09:31
言語 Ruby
(3.4.1)
結果
AC  
実行時間 100 ms / 2,000 ms
コード長 481 bytes
コンパイル時間 383 ms
コンパイル使用メモリ 7,424 KB
実行使用メモリ 12,288 KB
最終ジャッジ日時 2024-10-11 05:35:06
合計ジャッジ時間 7,454 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 55
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

def bin_sect(a, b, c, lo, hi)
  while hi - lo > 1
    mid = (hi + lo) / 2
    val = mid * (mid * (mid + a) + b) + c
    if val > 0
      hi = mid
    else
      lo = mid
    end
  end
  lo
end


a, b, c = gets.split.map(&:to_i)
x0 = 0
if c > 0
  x0 = bin_sect(a, b, c, -10 ** 10, 0)
elsif c < 0
  x0 = bin_sect(a, b, c, 0, 10 ** 10)
end

d = a + x0
e = x0 == 0 ? b : -c / x0
ss = Math.sqrt(d * d - 4 * e).to_i
x1 = (-d + ss) / 2
x2 = (-d - ss) / 2
x = [x0, x1, x2].sort
puts x*' '
0