Atcoder Beginner Contest 014 B問題 解説

【学んだこと】
・二進数変換
・ビット

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include<cstdio>
#include<functional>
#include <bitset>
using namespace std;

int main()
{
	int n, x, y, ans = 0;
	string z;
	
	cin >> n >> x ;
	bitset<20> b(x);

	for (int i = 0; i < n; i++) {
		cin >> y;

		if (b[i] == 1) {
			ans += y;
		}
	}

	cout << ans << endl;

	return 0;
}

bitset<20>でビットのサイズを決めて
b(x) で入力された十進数を二進数に変換。
b[]で特定ビット1を指定して1だった場合に加算する。
ビットは右から数える。

ビットを初めて学んだから解けなくて悔しい

ppp-lab.sakura.ne.jp