您的位置:首页 > 其它

hihocoder1178 计数

2015-07-24 16:16 274 查看
#include <iostream>
#include<cstring>
#include<set>
#include<cstdio>

using namespace std;

int n,L,R;
int main()
{
scanf("%d",&n);
scanf("%d%d",&L,&R);
int x=1;
while(x<R)
{
x*=2;
}
x=x/n+1;
set<int> s;
int ans;
for(int i=0;i<=x;i++)
{
ans=i^(n*i);
if(ans<=R&&ans>=L)
s.insert(ans);
}
printf("%d\n",s.size());
return 0;
}
简单枚举,只不过i的上限可以计算出来,n*i的二进制长度不可能超过R的长度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: