思路:位运算快速判别二进制第i位是否为空。
1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 int main(){ 5 int N, M, num_10[100000], task_num, tmp; 6 char task; 7 cin >> N >> M; 8 for (int i = 0; i < N; ++i) 9 cin >> num_10[i]; 10 for (int i = 0; i < M; ++i){ 11 cin >> task >> task_num; 12 tmp = 0; 13 if (task == 'C') 14 for (int j = 0; j < N; ++j) 15 num_10[j] += task_num; 16 else{ 17 for (int j = 0; j < N; ++j) 18 if (num_10[j] & (int)pow(2, task_num)) 19 tmp++; 20 cout << tmp << endl; 21 } 22 } 23 return 0; 24 }