提交时间:2024-10-23 09:33:58
运行 ID: 33831
//100 //O(1)TLE??? #include<bits/stdc++.h> using namespace std; #define int long long int l,r; inline void read(int &x){ x=0; char c=getchar(); while(!isdigit(c))c=getchar(); while(isdigit(c))x=(x<<1)+(x<<3)+(c^48),c=getchar(); return; } inline void write(int x,char c='\n'){ int op[20],tot=0; while(x)op[++tot]=x%10,x/=10; while(tot)putchar(op[tot--]^48); putchar(c); return; } void slv(){ read(l),read(r); // cout<<l<<" "<<r<<endl; if(l==r){ write(1); return; } int mid=0; for(int i=62;i>=0;i--) if((l>>i&1ll)!=(r>>i&1ll)){ mid=i; break; } int get; for(int i=mid-1;i>=0;i--){ // cout<<i<<" "<<(r>>i)<<endl; if(r>>i&1ll){ get=i+1; break; } } l&=(1ll<<mid+1)-1; r&=(1ll<<mid+1)-1; // cout<<mid<<" "<<get<<endl; int l1=l+(1ll<<mid),r1=(1ll<<mid+1)-1; int l2=(1ll<<mid),r2=(1ll<<mid)+(1ll<<get)-1; if(r2>=l1){ write((1ll<<mid+1ll)-l); } else{ write((1ll<<mid+1ll)-l1+r2-l+1ll); } } signed main(){ //freopen("or.in","r",stdin); //freopen("or.out","w",stdout); int T; cin>>T; while(T--) slv(); // } return 0; }