当输入为“5 2 1 1 9 16 10”时,输出为“3 4 3 1 7 5”。()
#include <stdio.h>
int n;
int a[1000];
int f(int x) {
int ret = 0;
for (; x; x &= x - 1) ret++;
return ret;
}
int g(int x) {
return x & -x;
}
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%d", &a[i]);
for (int i = 0; i < n; i++)
printf("%d ", f(a[i]) + g(a[i]));
printf("\n");
return 0;
}
正确
错误