簡単な貪欲法の問題を解く

私も含め、多くの人にとって記憶に残っている3.11という日ですが、今日も変わらず競技プログラミングの記事を投稿します。
簡単な貪欲法の問題を解いてみます。

以下の記事に触発されました。
簡単な貪欲法を解いてみた - Qiita

atcoder.jp

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

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

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

Nの最大値は10なのでとても気楽です。
こういう時、無駄にビット全探索とか、動的計画法とか頭の中に浮かんでしまいました。

貪欲法の練習を目的にしているのと、たぶんこれがシンプルなのかなと思いながら解きます。

単純にN回ループを回して、値で元の値を2倍にした数と、Kを足した数を比較して小さい方を繰り返し選んでいきます。
そうするとN回ループを回した値が最小の値になるはずです。

N = int(input())
K = int(input())
val = 1
for _ in range(N):
    val = min(val * 2, val + K)
print(val)