结论:从高位计算,第一个不相同的之后全部为11
假设ll,rr在第ii位开始不相同,ii位之前的异或之后全为00,之后的我们可以保证凑成不一样的,异或之后全部位11。这样我们的结果就是从ii开始往后全为11的二进制,将二进制转换位十进制输出即可。
AC代码

#include <bits/stdc++.h>
using namespace std;

void dilingtian()
{
    long long l, r;
    cin >> l >> r;
    int i;
    for (i = 63; i >= 0; i--)
        if ((l >> i) != (r >> i))
            break;
    cout << i << endl;
    cout << (1ll << i + 1) - 1 << endl;
}
int main(void)
{
    int t;
    cin >> t;
    while (t--)
        dilingtian();
}