牛计数(cnums)

来源:互联网 发布:java thumbnails 编辑:程序博客网 时间:2024/06/05 10:32
牛记数(cnums)
 
一头奶牛在研究数字的表示法,它只会二进制数,在泥地上它用一个脚印表示0,而用它的脚来表示1. 显然,它最多能表示4个位置上的1.
    现给定一个范围[s,t]  ( 1 <= s,t <= 15,000,000),请问这头牛可以表示其中的多少个数.
 
输入格式: cnums.in
* 只一行: 两个整数s t.
 
输出格式:cnums.out
* 只一行: 用少于41的二进制数可表示在[s,t]中的数的个数.
 
输入样例 (file cnums.in):
100 105
 
输出样例 (file cnums.out):
5
 
样例解释:
  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

=========================================待完成~回家咯~=======================================

最普通版:


#include<iostream>
#include<cstdio>
using namespace std;

int s,t,ans=0;

bool check(int num)
{
int an=0;
while(num!=0)
{
if(num%2==1)
++an;
if(an>4)
return false;
num/=2;
}
return true;
}

int main()
{
freopen("cnums.in","r",stdin);
freopen("cnums.out","w",stdout);

cin>>s>>t;
for(int i=s;i<=t;++i)
{
if(check(i))
++ans;
}

cout<<ans<<endl;
return 0;
}



0 0
原创粉丝点击