程序运行完21行后数组内元素都会变小。
#include <iostream>
using namespace std;
int num[100000];
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;
}
正确
错误