- 这个问题的答案和这个十进制数的类型有关(int、long、byte…)。
- 还有要清楚负数的二进制是补码。
我第一个想到的就是树状数组的lowbit
int lowbit(int x) { return x & -x; }// lowbit(4)=4 lowbit(6)=2
int main()
{
int n;
cin >> n;
int res = 0;
while (n) {
res++;
n -= lowbit(n);
}
cout << res;
}
我第一个想到的就是树状数组的lowbit
int lowbit(int x) { return x & -x; }// lowbit(4)=4 lowbit(6)=2
int main()
{
int n;
cin >> n;
int res = 0;
while (n) {
res++;
n -= lowbit(n);
}
cout << res;
}