题目
给定L,R。统计[L,R]区间内的所有数在二进制下包含的“1”的个数之和。
如5的二进制为101,包含2个“1”。
输入
第一行包含2个数L,R
输出
一个数S,表示[L,R]区间内的所有数在二进制下包含的“1”的个数之和。
样例输入
2 3
样例输出
3
解题思路
遍历[a,b],对每一个数转化为二进制,转化过程中,出现1即计入总数。
代码
#include<stdio.h>
int Count_one(int n){
int temp,num = 0;
while (n!=0)
{
temp = n%2;
if (temp==1)
num++;
n/=2;
}
return num;
}
int main()
{
int a,b,i,sum = 0;
scanf("%d %d",&a,&b);
for (i=a;i<=b;i++)
sum+=Count_one(i);
printf("%d",sum);
return 0;
}