#include<bits/stdc++.h>
#define int long long
using namespace std;
int l,r;
int dp[31];
int b[31],cnt;
int ds(int x,int y)
{
int res=x;
for(int i=1;i<=y-1;i++)
{
res=res*(x-i)/(i+1);
}
if(y==0) return 1;
return res;
}//ÔÚxÖÐÑ¡y¸ö
int d(int x,int y)
{
int res=0;
for(int i=y;i<=x;i++)
{
res+=ds(x,i);
}
return res;
}//ÔÚxÖÐÑ¡´óÓÚµÈÓÚy¸ö;
int solve(int x)
{
if(x==0) return 0;
memset(b,0,sizeof(b));
cnt=0;
while(x)
{
b[++cnt]=x%2;
x/=2;
}
int ans=0;
int cnt2=0;
for(int i=3;i<=cnt;i++)
ans+=d(i-2,i/2);
for(int i=cnt-1;i>=1;i--)
{
if(b[i]==0)
{
cnt2++;
continue;
}
ans+=d(i-1,(1+cnt)/2-cnt2-1);
}
// if(cnt2>=(1+cnt)/2) ans++;
return ans;
}
signed main ()
{
cin >> l >> r;
cout << solve(r)-solve(l-1);
}
70求调
记录