蓝桥杯——二进制数数

二进制数数

问题描述
 给定L,R。统计[L,R]区间内的所有数在二进制下包含的“1”的个数之和。
  如5的二进制为101,包含2个“1”。
输入格式 
 第一行包含2个数L,R
输出格式
 一个数S,表示[L,R]区间内的所有数在二进制下包含的“1”的个数之和。
样例输入
 2 3
样例输出
 3
数据规模和约定  L<=R<=100000;

代码

#include<iostream>
#include<cstdio>
int bin(int n,int b[20])
{
	 int a,c=n,i=19;
	 while(c)
	 {a=c/2;b[i]=c%2;c=a;i--; 
	 }
	 return b[20];
}			//定义一个可将十进制转换为二进制的函数
using namespace std;
int main()
{
	 int l,r,a[20]={0},flag=0;
	 cin>>l>>r;
	 for(l;l<=r;l++)
	 {
		  bin(l,a);
		  for(int i=0;i<20;i++)
		  if(a[i])
		  flag++;
	 }
	cout<<flag;
 	return 0;
}
发布了5 篇原创文章 · 获赞 0 · 访问量 284

猜你喜欢

转载自blog.csdn.net/Jenny_yl/article/details/104203623