結果

問題 No.550 夏休みの思い出(1)
ユーザー 小指が強い人
提出日時 2017-07-29 01:54:48
言語 Ruby
(3.4.1)
結果
AC  
実行時間 97 ms / 2,000 ms
コード長 790 bytes
コンパイル時間 230 ms
コンパイル使用メモリ 7,424 KB
実行使用メモリ 12,288 KB
最終ジャッジ日時 2024-10-11 05:36:55
合計ジャッジ時間 7,359 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 55
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.rb:25: warning: mismatched indentations at 'end' with 'else' at 23
Main.rb:26: warning: mismatched indentations at 'end' with 'while' at 17
Syntax OK

ソースコード

diff #

def solve_quad(a, b, c)
  d = Math.sqrt(b * b - 4 * a * c)
  x1 = (-b - d) / (2 * a)
  x2 = (-b + d) / (2 * a)
  x1, x2 = x2, x1 if x1 > x2
  return x1, x2
end
def func(x)
  res = x + $a
  res = res * x + $b
  res = res * x + $c
  return res
end
def search(left, right)
  return left if func(left) == 0
  return right if func(right) == 0
  while left < right - 2 do
		dist = right - left;
		v1 = func(dist / 3 + left).abs;
		v2 = func(dist * 2 / 3 + left).abs
		if v1 <= v2 then
			right = dist * 2 / 3 + left
		else
			left = dist / 3 + left
	  end
	end
	return left + 1;
end
m = 10**9 - 1
$a,$b,$c = gets.split.map(&:to_i)
l, r = solve_quad(3, $a * 2, $b)
ll = l.floor.to_i
lr = l.ceil.to_i
rl = r.floor.to_i
rr = r.ceil.to_i
print search(-m,ll), " ",search(lr,rl), " ", search(rr,m),"\n"
0