#12431. 珅泽教育CSP-J第一轮模拟考第二十八套 第 21 题
珅泽教育CSP-J第一轮模拟考第二十八套 第 21 题
二、阅读程序(判断题请选择“正确”或“错误”,共 18 题、40 分)
阅读程序(1)
输入的 num[i] 均为正整数。
#include <iostream>
using namespace std;
int num[10000];
int g(int a) {
int ans = 0, m = 0;
while(a){
if((a & 1) == 0)
ans |= 1 << m;
m++;
a >>= 1;
}
return ans;
}
int main() {
int n, res = 0;
cin >> n;
for(int i = 0; i < n; i++) cin >> num[i];
for(int i = 0; i < n; i++) num[i] = g(num[i]);
for(int i = 0; i < 31; i++) {
int k = 0;
for (int j = 0; j < n; j++) {
if ((num[j] >> i) & 1 == 1) k++;
}
res += k * (n - k);
}
cout << res;
return 0;
}
若输入如下,输出是( )。
16
1 3 7 15 31 63 127 255 511 1023 2047 4095 8191 16383 32767 65535
{{ select(1) }}
- 680
- 0
- 637
- 706