输入的 a[i] 必须全为正整数,否则程序将陷入死循环。()
#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;
}
正确
错误