RT。。。70感觉和暴力一个分了。
#include <bits/stdc++.h>
using namespace std;
#define M 105
#define int long long
int n,m,g[M],h[M],L,f[M][M];
int Sol(int now,int k,int s1,int s0,int lst)
{
if(now>L) return ((s0-lst)>=s1); if(!k&&!lst&&f[now][s1-s0+M-50]!=-1) return f[now][s1-s0+M-50];
int H=(k?h[now]:1),res=0;
for(int i=0;i<=H;i++)
{
res+=Sol(now+1,k&&(i==H),s1+i,s0+(!i),((s1+i)==0?lst+1:lst));
}
if(!k&&!lst) f[now][s1-s0+M-50]=res;
return res;
}
signed Get(int y)
{
L=0;memset(h,0,sizeof(h));memset(f,-1,sizeof(f));
while(y) h[++L]=y%2,y>>=1;reverse(h+1,h+1+L);
return Sol(1,1,0,0,0);
}
int main()
{
cin>>n>>m;
cout<<Get(m)-Get(n-1);
return 0;
}