AtCoder ABC 076 B – Addition and Multiplication Python解説

スポンサーリンク

Addition and Multiplication

square1001 は、電光掲示板に整数 1 が表示されているのを見ました。
彼は、電光掲示板に対して、以下の操作 A, 操作 B をすることができます。

操作 A: 電光掲示板に表示する整数を「今の電光掲示板の整数を 2 倍にしたもの」に変える。
操作 B: 電光掲示板に表示する整数を「今の電光掲示板の整数に K を足したもの」に変える。

square1001 は、操作 A, 操作 B 合計で N 回 行わなければなりません。
そのとき、N 回の操作後の、電光掲示板に書かれている整数として考えられる最小の値を求めなさい。

AtCoder Beginner Contest 076 「Addition and Multiplication」

操作A、操作BをN回行った後、整数として考えられる最小の値を求めるということです。
操作A、操作Bともに単調増加なので、整数を2倍にしたときとKを足したときの小さい方をN回選んであげれば大丈夫です。

n = int(input())
k = int(input())

ans = 1

for _ in range(n):
    ans = min(ans * 2, ans + k)
    
print(ans)

ansに初期値の1を入れ、min関数でansを2倍したもの、kを足したものの小さい方を選んでいます。
これをn回繰り返して完了です。