描述
有一个叫做 Piggy 的小男孩,他是一个天生的天才数学家。他喜欢数学,喜欢用数学解决问题。
有一天,Piggy 发现一个非常有趣的问题:在一个区间内,有多少个整数的二进制表示恰好有一个0
。他很兴奋,决定把这个问题告诉他的爸爸。
Piggy 的爸爸也是一个数学家,他告诉 Piggy 这个问题的答案,并且告诉他如何计算这个答案。Piggy 很高兴,他决定尝试用自己的方法解决这个问题。
输入
共一行,两个整数a和b。
输出
一个整数,表示满足条件的整数数量。
输入样例 1
1 10
输出样例 1
3
输入样例 2
0 0
输出样例 2
1
提示
【数据范围】
1≤a≤b≤10000000
【样例1解释】
1−10范围内:
2的 二进制(10)、5的 二进制(101)、6的 二进制(110 )中只包含一个0,所以输出3。
【样例2解释】
0的二进制(0),包含一个0,所以输出1。
#include<iostream>
using namespace std;
int main()
{
int a,b,c=0,t=0,n,x,k=0;
cin>>a>>b;
for(int i=a;i<=b;i++)
{
if(i==0) k++;
n=i;
t=0;
while(n!=0)
{
x=n%2;
if(x==0)
{
t++;
}
n=n/2;
}
if(t==1)
{
k++;
}
}
cout<<k;
return 0;
}