for
文で求めてもいいし、1 << N
というようにビットシフト演算子を用いても解ける!
問題概要
0 以上の整数 が与えられる。
の値を求めよ。
制約
解法 (1):for
文
は「 を 回かけたもの」です。 回かける処理は for
文で実装できます。
注意したいのは初期値です。初期値は「0 回かけた状態の値」を入れます。2 を 0 回かけた状態の値 (すなわち ) は 1 なので、初期値は 1 とします。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; int res = 1; for (int i = 0; i < N; ++i) res *= 2; cout << res << endl; }
解法 (2):ビットシフト演算子を使う
ここでは理屈は抜きにします。 とは、実は
1 を 回、左にビットシフトしたもの
ともみなせます。したがって、1 << N
と書けます。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; cout << (1 << N) << endl; }