fork download
  1. #include<bits/stdc++.h>
  2. #define int long long
  3. using namespace std ;
  4. int mask(int k , int b , int e)
  5. {
  6. if(b>e) return 0 ;
  7. int a=e-b+1 ;
  8. int d=(1ll<<(1ll*a)) ; d-- ;
  9. return k&d ;
  10. }
  11. int check(int k , int th)
  12. {
  13. int p=(k&(1ll<<(th*1ll))) ;
  14. if(p) p=1 ;
  15. return p ;
  16. }
  17. void change(int &k , int th)
  18. {
  19. int p=(1ll<<(th*1ll)) ;
  20. k^=p ;
  21. }
  22. int32_t main()
  23. {
  24. ios_base::sync_with_stdio(0) ; cin.tie(0) ; cout.tie(0) ;
  25. // for(int i = 10000000000 ; i <= 20000000000 ; i++) mxx=max(mxx,((10&i)*(12&i))) ;
  26. //cout<<mxx<<endl ;
  27. int t ; cin>>t ;
  28. while(t--)
  29. {
  30. int x,y,l,r,mex=0 ;
  31. cin>>x>>y>>l>>r ;
  32. // for(int i = l ; i <= r ; i++) cout<<x<<" "<<y<<" "<<i<<" "<<(x&i)*(y&i)<<endl ;
  33. if(x==0 || y==0) {cout<<"0"<<endl ; continue ; }
  34. vector<int>v ;
  35. for(int i = 42 ; i >= 0 ; i--)
  36. {
  37. int a=check(l,i) , b=check(r,i) ;
  38. if(a) a=1 ; if(b) b=1 ;
  39. if((!a||a) && b)
  40. {
  41. int p=mex , q=(1ll<<((i-0ll)*1ll)) ;
  42. p|=(q-1ll) ; //cout<<p<<" "<<i<<" "<<mex<<endl ;
  43. if(p>=l && p<=r) v.push_back(p) ;
  44. mex|=q ;
  45. // cout<<p<<" "<<mex<<endl ;
  46. }
  47. }
  48. v.push_back(mex) ; v.push_back(l) ; v.push_back(r) ;
  49. // for(int i = 0 ; i < v.size() ; i++) cout<<v[i]<<" " ; cout<<endl ;
  50. sort(v.begin(),v.end()) ;
  51. int mx=0,ans=r ;
  52. for(int i = 0 ; i < v.size() ; i++)
  53. {
  54. int w=v[i] ;
  55. int m=(x&w)*(y&w) ;
  56. if(m>mx) {mx=m ; ans=w ;}
  57. else if(m==mx) ans=min(ans,w) ;
  58. }
  59. // cout<<ans<<endl ;
  60. for(int i = 42 ; i >= 0 ; i--)
  61. {
  62. int a=check(x,i) , b=check(y,i) , c=check(ans,i) ;
  63. // cout<<a<<" "<<b<<" "<<c<<endl ;
  64. int tst=ans ;
  65. if(c && !a && !b) {change(tst,i) ;// cout<<tst<<endl ;
  66. if(tst>=l && tst<=r) change(ans,i) ;}
  67. }
  68. cout<<ans<<endl ;
  69. }
  70. }
  71.  
  72.  
Success #stdin #stdout 0s 4284KB
stdin
2
7 12 4 17
7 12 0 8
stdout
15
7