はまやんはまやんはまやん

hamayanhamayan's blog

Power of Two [yukicoder No.820]

https://yukicoder.me/problems/no/820

解説

https://yukicoder.me/submissions/343360

パット見難しそうに見えると思う。
 
例えば、Nが3のときは、
1 2 3 4 5 6 7 8
となり、Kが2のときは、
4 8
となって、2が答え。
これは最大が8で4で割り切れる個数なので、8/4=2。
 
例えば、Nが4のときは、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
となり、Kが2のときは、
4 8 12 16
となって、4が答え。
これは最大が16で4で割り切れる個数なので、16/4=4。
 
という感じに実験していくと、2^N÷2^Kが答えになると気がつく。
これは2^(N-K)であるため、これを基本は答えればいい。
N-K<0である場合は答えは存在しないので、0が答え。

int N, K;
//---------------------------------------------------------------------------------------------------
void _main() {
	cin >> N >> K;

	int d = N - K;

	int ans = 0;
	if (0 <= d) {
		ans = 1;
		rep(i, 0, d) ans *= 2;
	}
	cout << ans << endl;
}