题解 | #兔子的区间密码#

兔子的区间密码

https://ac.nowcoder.com/acm/problem/20860

结论:从高位计算,第一个不相同的之后全部为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();
}
全部评论

相关推荐

26牛牛不会梦到感谢信:羡慕离职了还能吃吗现在就赶回去
点赞 评论 收藏
分享
02-16 10:35
已编辑
西安科技大学 后端
虚闻松声:整体应该挺好了 项目2-3个就够了。都类似第一段这么写。 构建数据闭环 推动工程创新 优化架构设计 免费修改简历,就业咨询,欢迎私信交流。
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务