来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

文章目录

  • 题目描述
  • 题解:
  • 代码:

题目描述

有一只可爱的兔子被困在了密室了,密室里有两个数字,还有一行字:
只有解开密码,才能够出去。
可爱的兔子摸索了好久,发现密室里的两个数字是表示的是一个区间[L,R]
而密码是这个区间中任意选择两个(可以相同的)整数后异或的最大值。
比如给了区间[2,5] 那么就有2 3 4 5这些数,其中 2 xor 5=7最大 所以密码就是7。
兔子立马解开了密室的门,发现门外还是一个门,而且数字越来越大,兔子没有办法了,所以来求助你。
提示:异或指在二进制下一位位比较,相同则 0 不同则 1
例如2=(010) 2 5=(101)2
所以2 xor 5=(111)2=7
输入描述:
第一行一个数 T,表示数据组数。
接下来 T 行,每行两个数 L,R, 表示区间[L,R]。
输出描述:
输出共T行每行一个整数,表示[L,R]的密码。
示例1
输入
复制

5
1 10
2 3
3 4
5 5
2 5

输出
复制

15
1
7
0
7

备注:
对于30%的数据
1 ≤ T ≤ 10
0 ≤ L ≤ R ≤ 100
对于另外10%的数据
L=R
对于70%的数据
1 ≤ T ≤ 10
0 ≤ L ≤ R ≤ 50000
对于100%的数据
1 ≤ T ≤ 10000
0 ≤ L ≤ R ≤ 1018
(对于100%的数据) 输入数据较大,请使用快速读入。

题解:

不同异或为1
要使得两个数异或后的结果最大,二进制状态下就要从高位开始就尽量大,也就是两个数从高位起尽可能不相同
当L = = R时,return 0
当L<R时,看L和R最高二进制位是否相等
如果相等在L~R之间的数这一位都是一样的,不会对答案有影响,继续往后推看下一位。
如果不相等,R的这一位一定是1,L的这一位肯定是0,从这一位往后我们就可以根据R的情况来决定另一个要与R异或的数(我们称这个数为x),从这一位开始,x的之后每一位可以任取,x一定大于等于L,那么之后取得数都可以实现互补(一个取0,一个取1),异或出来都是1
假设最高是2 i ,我们就可以选取2 i和2 i-1这两个数去异或得到的答案就是2 i+1-1
所以答案就是L和R二进制不相同的最高位开始之后都是1,就是答案

求一次是O(log n)

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
int size[maxn];
int a[maxn],sum;
vector<int>g[maxn];
typedef long long ll;
int n;
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;t=read();while(t--){ll l=read(),r=read();int i;for(i=63;i>=0;i--){if((l>>i)!=r>>i)break;}cout<<(1ll<<i+1)-1<<endl;}return 0;
}

牛客网【每日一题】7月31日题目精讲—兔子的区间密码相关推荐

  1. 牛客网 每日一题 7月23日题目精讲—wpy的请求

    来源:牛客网: 文章目录 wpy的请求 题解: 代码: wpy的请求 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K Special Judge ...

  2. 【牛客每日一题】tokitsukaze and Soldier 题目精讲 贪心、优先队列、堆

    链接:https://ac.nowcoder.com/acm/problem/50439 来源:牛客网 ACM在线模板 今天才发现牛客推出了一个每日一题的版块,3月25号就开始了,今天才发现,赶紧补救 ...

  3. 【每日一题】8月28日题目精讲 编号

    [每日一题]8月28日题目精讲 编号 链接:https://ac.nowcoder.com/acm/problem/19925 来源:牛客网 题目描述 你需要给一批商品编号,其中每个编号都是一个7位1 ...

  4. 【每日一题】7月17日题目精讲—BOWL 碗的叠放

    [每日一题]7月17日题目精讲-BOWL 碗的叠放 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld ...

  5. 【每日一题】7月15日题目精讲—生日快乐

    [每日一题]7月15日题目精讲-生日快乐 [SCOI2009]生日快乐 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO For ...

  6. 【每日一题】7月13日题目精讲—Kingdom

    [每日一题]7月13日题目精讲-Kingdom 文章目录 题目描述 题解: 代码: 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 1048576K,其他语言2097152K 64bi ...

  7. 牛客网【每日一题】4月14日题目精讲 Xorto

    文章目录 题目描述 题解: 代码: 扩展 传送 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format:%lld 题目描述 ...

  8. 牛客网 【每日一题】8月5日题目精讲—蓝魔法师

    来源:牛客网: 文章目录 题目描述 题解: 代码: 题目描述 "你,你认错人了.我真的,真的不是食人魔."–蓝魔法师 给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于 ...

  9. 牛客网【每日一题】7月30日题目精讲—Xor Path

    来源:牛客网: Xor Path 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 给定一棵 ...

最新文章

  1. Python import 的用法
  2. NYOJ——街区最短路径问题
  3. Lua中的模块与module函数详解
  4. MarkdownPad2 免费升级pro版本
  5. Linuxubuntu chmod和chown命令用法详细介绍
  6. 【已解决】Linux下安装MySQL数据库
  7. 安装codeblocks17.12
  8. linux网络编程(三)select、poll和epoll
  9. px4代码解析(3)
  10. 高并发架构解决方案总结
  11. SpringSecurity-1-前言,登录原理
  12. 100天python、github_GitHub - 214929177/Python-100-Days: Python - 100天从新手到大师
  13. 2021年最值得推荐的29个开源软件,想提升自己的程序员赶快收藏
  14. 关于显示屏分辨率的问题
  15. WEB前端 -- onfocus=quot;this.blur()quot;
  16. LINUX——正则表达式
  17. 【Unity Shader】屏幕后处理3.0:均值模糊和高斯模糊
  18. 多个并列的if条件句和if-elif的区别
  19. c++控制台密码管理系统
  20. 追悼伟大的科学家史蒂芬·霍金,他留下的预言能实现吗 ?

热门文章

  1. 程序猿专属成语 get√
  2. 有趣!机器学习预测《守望先锋》里的赢家
  3. 管理系统中计算机应用怎么自学,有自学的没,管理系统中计算机应用上机题。...
  4. 打开本地文件_可以跨软件搜索文件?结构式检索你一定要学会!
  5. 为什么电脑不能打字_嘉兴在线丨「生活经济学」为什么笔记本电脑能在任何国家的供电标准下运作,其他大部分电器却不能?...
  6. client中周期性边界_「微评」增加艺术品在投资组合中的比例 推进国家艺术软实力...
  7. html assign无效,Object.assign的一些用法
  8. element 方法返回的boolean被当成字符串了_13个需要知道的方法:使用 JavaScript 来操作 DOM...
  9. 在每个运行中运行多个查询_在Kubernetes中运行OpenEBS
  10. rsa 模数 指数转换 c语言_模数转换,你必须知道的8个经典ADC转换电路方案