解题思路:
用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 人评分
蛇行矩阵 (C++代码)(预生成结果以节省每次生成的时间)浏览:890 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:568 |
C语言程序设计教程(第三版)课后习题6.9 (C++代码)论pow函数的应用浏览:1079 |
简单的a+b (C语言代码)浏览:827 |
C语言程序设计教程(第三版)课后习题9.1 (Java代码)浏览:481 |
【蟠桃记】 (C语言代码)浏览:711 |
【绝对值排序】 (C++代码)浏览:720 |
简单的a+b (C语言代码)浏览:564 |
printf基础练习2 (C语言代码)浏览:321 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:690 |