【牛计数】
一头神牛只会二进制,在泥地上它用一个脚印表示0,而且用它的脚来表示1显然它最多能表示4个位置上的1.
现在给定一个范围[s,t] (t<=s,s<=1500000),请问这头牛可以表示其中的多少个数。
【输入格式】
只一行,两个整数s和t。
【输出格式】
只一行,用少于4个1的二进制可表示在[s,t]中的个数。
【输入样例】
100 105
【输出样例】
5
数 | 二进制数 | 1的个数 | 是否可以表示 |
---|---|---|---|
100 | 1100100 | 3 | Yes |
101 | 1100101 | 4 | Yes |
102 | 1100110 | 4 | Yes |
103 | 1100111 | 5 | No |
104 | 1101000 | 3 | Yes |
105 | 1101001 | 4 | Yes |
枚举法:
#include<iostream>
using namespace std;
int main()
{
int c=0,cc=0;
int s,t;
cin>>s>>t;
for(int i=t;t<=s;i++)
{
fo///r(x=i;x>0;x/=2)
c+=x%2;
cc+=(c<=4