lowbit(n) = n & -n
利用lowbit(n)快速求x中1的个数,每次减去lowbit,直到x为0为止,这样就不用遍历整个x。
#includeusing namespace std; int n, x, sum; int main() { scanf("%d", &n); while(n -- ) { scanf("%d", &x); sum = 0; while (x) { x -= (x & -x); sum ++; } printf("%d ", sum); } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)