$\huge \color{orange}{成仙之路->}$ $\huge \color{purple}{算法基础课题解}$
思路:
直接x -= lowbit(x),减多少次就说明有多少个1
完整代码
#include<bits/stdc++.h>
using namespace std;
int lowbit(int x) //返回最后一位1的位置,例如lowbit(10100)=100;
{
return x&-x;
}
int main()
{
int n;
cin>>n;
while(n--)
{
int x;
cin>>x;
int res=0;
while(x) x-=lowbit(x),res++;
cout<<res<<' ';
}
return 0;
}
这是什么算法(懒得细看了)·_·
这个就是位运算啊
我怎么没看见>>和<<
lowbit就是直接返回了最后一个1,所以直接减就行了,不用 >> 了
啊我傻*了