题目如下
思路解法; 我们利用位运算,n和n-1相与,之后的结果就是n的二进制的1会少一个。当n为0的时候结束。
#include<iostream>
using namespace std;
class solution
{
public:
int len_num(long int n)
{
int count;
while(n!=0)
{
count++;
n=n&(n-1);
}
return count;
}
};
int main()
{
long int n;
cin>>n;
solution s;
int res=s.len_num(n);
cout<<res;
return 0;
}