問題概要
問題ページ
-
-
D - Takahashi Unevolved
問題ページへ移動する
問題文
いろはちゃんはペットを育てるゲームにはまっています。
いろはちゃんはペットとして高橋君を飼っており、はじめ高橋君の 強さ は X 、経験値 は 0 です。
これらの値は次の 2 種類の特訓によって増加します。
- カコモンジムに通う:強さが A 倍になり、経験値は 1 増える。
- AtCoderジムに通う:強さが B 増え、経験値は 1 増える。
高橋君は強さが Y 以上になると進化しますが、進化しない方がかわいいといろはちゃんは思っています。
そこで、強さが Y 以上にならないように高橋君に特訓を課すとき、経験値の最大値を求めてください。
制約
- 1 \leq X < Y \leq 10^{18}
- 2 \leq A \leq 10^9
- 1 \leq B \leq 10^9
- 入力は全て整数
問題の考察
ACコード
import sys
def solve():
readline = sys.stdin.buffer.readline
mod = 10 ** 9 + 7
x, y, a, b = list(map(int, readline().split()))
mt = 0
for i in range(10 ** 10):
t = x * pow(a, i)
if t < y:
rest = y - t - 1
mt = max(mt, i + rest // b)
else:
break
print(mt)
if __name__ == '__main__':
solve()