n = int(input())
a,b = map(int,input().split())
paiza_score = 1
kirijima_score = 1
cnt = 0
while n > kirijima_score:
#paiza_turn
kirijima_score = paiza_score * a
#kirijima_turn
paiza_score += kirijima_score % b
#turn_end
cnt += 1
print(cnt)
これでいいかな?と思ったんですがだめでした。
じっくり問題読むと、つまりキリジマのスコアがnを超えたときってことなので
それはつまり、キリジマのスコアが動いた時に判定しなきゃ意味がないんですね。
だからwhileの条件判定じゃだめってこと。
だから
n = int(input())
a,b = map(int,input().split())
paiza_score = 1
kirijima_score = 1
cnt = 0
#while条件はTrueに変更
while True:
kirijima_score += paiza_score * a
#この時点で判定する
if n < kirijima_score:
break
#kirijima_turn
paiza_score += kirijima_score % b
#turn_end
cnt += 1
print(cnt)
あれ、、、だめでしたね。。
こうするとテストケースが1になってしまいました。
テストケースは6と3,2でしたね
n = 6
a,b = 3,2
kirijima = 4
paiza = 3
cnt = 1
で次に、
kirijima = 13
で超えたのでおわり
cnt = 1のままでしたね。。。
ってことは回数を増やすのは最初でないとだめだ。
n = int(input())
a,b = map(int,input().split())
paiza_score = 1
kirijima_score = 1
cnt = 0
#while条件はTrueに変更
while True:
cnt += 1
kirijima_score += paiza_score * a
#この時点で判定する
if n < kirijima_score:
break
paiza_score += kirijima_score % b
print(cnt)
OKでした。
なかなかここらへん、どこで回数増やすべきなのかってのが
分かりづらいんですよね。。。
一番最初に回数を増やすべきか、最後にするべきかの判断をどう考えればいいかが、難しいです。