题意:
让你找出所给的l, r 区间中,在二进制下1的个数最多的值。
思路:
直接从l开始填充1,填充到尽量接近r即可。
code:
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
using namespace std;
typedef long long LL;
int main()
{
LL l, r;
LL n;
cin>>n;
while(n--)
{
cin>>l>>r;
for(LL i = 1;i + l <= r; i <<= 1)
{
if((l & i) == 0)
{
l += i;
}
}
cout<<l<<endl;
}
return 0;
}