http://abc076.contest.atcoder.jp/tasks/abc076_b
解法
http://abc076.contest.atcoder.jp/submissions/1720047
愚直に全てシミュレートする。
キューのqueに今までで取りうる可能性のある数を入れるとすると、
N回、キューの中の数を2倍か+Kかして更新していく。
最後にキューの中に入っている最小の数を答える。
#define INF INT_MAX/2 int N, K; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N >> K; queue<int> que; que.push(1); rep(i, 0, N) { queue<int> q; while (!que.empty()) { int x = que.front(); que.pop(); q.push(x * 2); q.push(x + K); } swap(que, q); } int ans = INF; while (!que.empty()) { int x = que.front(); que.pop(); ans = min(ans, x); } cout << ans << endl; }