解题思路:
用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 人评分
简单的a+b (C语言代码)浏览:573 |
C语言程序设计教程(第三版)课后习题6.5 (C++代码)浏览:449 |
用筛法求之N内的素数。 (C语言代码)浏览:646 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:832 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:670 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:577 |
钟神赛车 (C语言代码)浏览:595 |
前10名 (C语言代码)浏览:727 |
简单的a+b (C语言代码)浏览:827 |
盐水的故事 (C语言代码)浏览:1525 |