感受


思路

第1位:0 1 0 1 0 1 0 1
第2位:0 0 1 1 0 0 1 1
第3位:0 0 0 0 1 1 1 1
第4位:0 0 0 0 0 0 0 0


第1位:0 1| 0 1 0 1| 0 1
第2位:0 0| 1 1 0 0| 1 1
第3位:0 0| 0 0 1 1| 1 1
第4位:0 0| 0 0 0 0| 0 0


第1位:0 1 0 1 0 1| 0 1|
第2位:0 0 1 1 0 0| 1 1|
第3位:0 0 0 0 1 1| 1 1|
第4位:0 0 0 0 0 0| 0 0|





#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 3e5 + 10;
const ll mod = 998244353;
ll l, r;
bool check(ll x, ll y, int k){
    x >>= k; y >>= k;
    if((x & 1) ^ (y & 1)) return true;
    return false;
}
int main(){
    //ull a = 1;
    //printf("%llu\n", a << 60);
    int t;
    scanf("%d", &t);
    while(t--){
        scanf("%lld%lld", &l, &r);
        int i;
        for(i = 60; i >= 0; i--){
            if(check(l, r, i)) break;
        }
        i++;
        ll ans = 1;
        printf("%lld\n", (ans << i) - 1);
    }
    return 0;
}