一开始想到是暴力构造 但是题没读懂。还好队友读懂了。今天自己写了个 发现还挺好写的。改了几个点过了。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
set<ll> s;
void gouzao (int x,int y)
{
ll res=0;
for(int i=0;i<x;i++)
res=res*2+1;
for(int i=0;i<y;i++)
res=res*2;
int t=63/(x+y);
int tot=1;
s.insert(res);
while(tot<t)
{
tot++;
for(int i=0;i<x;i++)
res=res*2+1;
s.insert(res);
for(int i=0;i<y;i++)
res=res*2;
s.insert(res);
}
int v=63%(x+y);
if(v>=x)
{
for(int i=0;i<x;i++)
res=res*2+1;
s.insert(res);
}
}
void init()
{
for(int i=1;i<=63;i++)
{
for(int j=0;j<=63-i;j++)
{
gouzao(i,j);
}
}
}
int main()
{
ll l,r;
init();
scanf("%lld%lld",&l,&r);
ll ans=0;
for(set<ll>::iterator iter=s.begin();iter!=s.end();iter++)
{
if(*iter>=l&&*iter<=r)
ans++;
}
cout<<ans<<endl;
}