結果

問題 No.718 行列のできるフィボナッチ数列道場 (1)
ユーザー hirakich1048576hirakich1048576
提出日時 2016-07-10 19:01:38
言語 Ruby
(3.3.0)
結果
RE  
実行時間 -
コード長 615 bytes
コンパイル時間 510 ms
コンパイル使用メモリ 11,196 KB
実行使用メモリ 15,396 KB
最終ジャッジ日時 2023-10-12 15:11:21
合計ジャッジ時間 4,332 ms
ジャッジサーバーID
(参考情報)
judge15 / judge14
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 RE -
testcase_01 RE -
testcase_02 RE -
testcase_03 RE -
testcase_04 RE -
testcase_05 RE -
testcase_06 RE -
testcase_07 RE -
testcase_08 RE -
testcase_09 RE -
testcase_10 RE -
testcase_11 RE -
testcase_12 RE -
testcase_13 RE -
testcase_14 RE -
testcase_15 RE -
testcase_16 RE -
testcase_17 RE -
testcase_18 RE -
testcase_19 RE -
testcase_20 RE -
testcase_21 RE -
testcase_22 RE -
権限があれば一括ダウンロードができます
コンパイルメッセージ
Main.rb:2: warning: parentheses after method name is interpreted as an argument list, not a decomposed argument
Main.rb:6: warning: parentheses after method name is interpreted as an argument list, not a decomposed argument
Main.rb:16: warning: parentheses after method name is interpreted as an argument list, not a decomposed argument
Syntax OK

ソースコード

diff #

def div_ceil (l, r)
	q = l / r ; q += 1 if l % r != 0 ; q
end

def binpow (x)
	if x == 0 then
		1
	else
		lowest = ((x % 2 == 0) ? 1 : $kd)

		lowest * (binpow(x / 2) ** 2)
	end
end

def calc (n)
	($a - 1) * binpow(n) + (binpow(n + 1) - 1) / $k
end

def init_r
	maybe = 1
	maybe *= 2 while calc(maybe) < $m
	maybe
end

def solve
	if $k == 0 then
		return $m - $a
	end
	$kd = $k + 1
	l = 0
	r = init_r

	while l != r
		if calc((l + r) / 2) < $m then
			l = div_ceil(l + r, 2)
		else
			r = (l + r) / 2
		end
	end

	l
end

$m     = gets.chomp.to_i(10)
$a, $k = gets.chomp.split(' ').map{|e| e.to_i(10)}

puts solve

0