B - 価格の合計 / AtCoderBeinnerContest#014

abc014.contest.atcoder.jp

#include <iostream>
using namespace std;

void Solve(int n, int x)    {
    int a[20], answer=0;

    for (int i=0; i<n; ++i)
        cin >> a[i];
    for (int k=0; k<n; ++k)
        if (x >> k & 1) answer+=a[k];
    cout << answer << endl;
}

int main(void)  {
    int n, x;

    cin >> n >> x;
    Solve(n,x);
    return 0;
}

ビット演算で1が立っていたら、その場所の価格を足し上げ、最後に出力。
~了~