题目:Bits
思路:每次将L的最右边的0变为1,当L>R是退出。
代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll L,R;
void readin() {
scanf("%lld%lld",&L,&R);
}
ll slv(){
ll x=L,j=0;
while(L<=R) {
ll y=x;
while(y&(1LL<<j)) j++;
y^=(1LL<<j);
if(y>R) break;
x=y;
}
return x;
}
int main() {
int T;
scanf("%d",&T);
while(T--) {
readin();
ll ans=slv();
printf("%lld\n",ans);
}
return 0;
}