解题思路:
用lowbit函数取x的二进制数的最后一个1,每次减去最后一个1并执行 sum++,直到x减为0,剪了几次说明就有几个1,把L到R依次遍历一遍即可得出答案。
参考代码:
#include<iostream>
using namespace std;
int lowbit(int x){
return x&-x;
}
int main()
{
int l,r;
cin>>l>>r;
int sum=0;
for(int i=l;i<=r;i++){
int x=i;
while(x) x-=lowbit(x),sum++;
}
cout<<sum<<endl;
return 0;
}
0.0分
1 人评分