以最先不同的为开始,往后都可以取到1
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
// inline ll read() {
// ll x = 0, y=1;
// char c = getchar();
// while (c=='-') {
// y = -y;
// c = getchar();
// }
// while (c>='0'&&c<='9') {
// x = x*10+(c-'0');
// c = getchar();
// }
// return x;
// }
inline ll read() {
ll f = 1, x = 0;
char c = getchar();
while(c < '0' || c > '9') {
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9') {
x = (x << 1) + (x << 3) + (c ^ 48);
c = getchar();
}
return f * x;
}
int main() {
ll T = read();
while (T--) {
ll l = read(), r=read(), ans=0;
bool flag = false;
int i;
for (i=63;i>=0;i--) {
if ((l>>i&1)!=(r>>i&1)) {
break;
}
}
printf("%lld\n", (1ll<<(i+1))-1);
}
return 0;
}

京公网安备 11010502036488号