みんなのプロコン 2019 C
選べるパターンは2つ
①ビスケットを1枚増やす
②ビスケットA枚をB枚に交換する(2回分の操作)
②の場合は、得られるのは次の3パターン
B - A < 2
この場合は①よりも少なくなるので①を選択
B - A == 2
この場合は①と同じになるので①を選択
B - A > 2
この場合は①よりも多くなるので、②を選択
①を選ぶ場合は、k + 1個のビスケットが得られる。
②の場合は、
- まずはビスケットをA枚に増やす(a - 1回)
- ②は2回分の操作のため、(k - a + 1) / 2回行える。得られるビスケットはB - A枚。
- 2を行った後にkが1回残っていた場合は①を行い、ビスケットを1枚得る。
def solve(): k, a, b = map(int, input().split()) if a > b - 2: return k + 1 k -= (a - 1) return a + (b - a) * (k // 2) + (k & 1) print(solve())