Description
一头奶牛在研究数字的表示法,它只会二进制数,在泥地上它用一个脚印表示0,而用它的脚来表示1. 显然,它最多能表示4个位置上的1.
现给定一个范围[s,t] ( 1 <= s,t <= 15,000,000),请问这头牛可以表示其中的多少个数.
Input
* 只一行: 两个整数s 和t.
Output
* 只一行: 用少于4个1的二进制数可表示在[s,t]中的数的个数.
Sample Input
100 105
Sample Output
5
HINT
样例解释:
数 2进制数 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
AC Code:
#include <iostream>
using namespace std;
int main()
{
int s, e, i, j, c = 0, temp, x;
bool flag;
cin >> s >> e;
for (i = s; i <= e; i++)
{
x = i;
temp = 0;
flag = true;
for (j = 0; j < 32; j++)
{
temp += x & 1;
if (temp == 5)
{
flag = false;
break;
}
x >>= 1;
}
if (flag)
{
c++;
}
}
cout << c << endl;
return 0;
}