蓝桥杯 二进制数数 算法训练
程序员文章站
2022-07-15 09:50:11
...
算法训练 二进制数数
时间限制:1.0s 内存限制:256.0MB
问题描述
给定L,R。统计[L,R]区间内的所有数在二进制下包含的“1”的个数之和。
如5的二进制为101,包含2个“1”。
输入格式
第一行包含2个数L,R
输出格式
一个数S,表示[L,R]区间内的所有数在二进制下包含的“1”的个数之和。
样例输入
2 3
样例输出
3
数据规模和约定
L<=R<=100000;
#include<stdio.h>
int main(void)
{
int L,R,a=0,count=0;/*给定区间L,R*/
scanf("%d %d",&L,&R);
for(int i=L;i<=R;i++)/*求区间内的二进制*/
{
a=i;/*缺少这个临时变量,直接用i,当i=0跳出while在自加就不能退出for循环 */
while(a>0)/*因为是计入二进制中1的个数,不用考虑顺序 */
{
if(a%2==1)/*当二进制取余的结果为1,计数器增加,将位数减一*/
count++;
a/=2;
}
}
printf("%d",count);
return 0;
}
还是不知道为什么c++提交就100,c提交就编译错误,以为是用了c++的注释符//,c不支持,改成/**/也不行。