NC20860 兔子的区间密码

题目

题目描述

有一只可爱的兔子被困在了密室了,密室里有两个数字,还有一行字:

只有解开密码,才能够出去。

可爱的兔子摸索了好久,发现密室里的两个数字是表示的是一个区间 \([L,R]\)

而密码是这个区间中任意选择两个(可以相同的)整数后异或的最大值。

比如给了区间 \([2,5]\) 那么就有 \(2,3,4,5\) 这些数,其中 \(2 \oplus 5=7\) 最大,所以密码就是\(7\) 。

兔子立马解开了密室的门,发现门外还是一个门,而且数字越来越大,兔子没有办法了,所以来求助你。

提示:异或指在二进制下一位位比较,相同则 \(0\) 不同则 \(1\)

例如 \(2=(010)_2\) , \(5=(101)_2\)

所以 $ 2 \oplus 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 ≤ 10^{18}\)

(对于 \(100\%\) 的数据) 输入数据较大,请使用快速读入。

题解

思路

知识点:贪心,位运算。

要使两个数异或最大,最好的解就是形如 \(111111\) ,\(000000\) 的异或。

我们只要找到第一对能够产生 \(1 \oplus 0\) 的数位,即异或结果的最高位。这里可以用区间端点异或得到。

注意到区间是连续的,如果产生如上述的一对,则至少有以这位开始的二进制,如在第5位,则有 \(100000\) ,则必有 \(011111\) ,因此异或最大值是 \(111111\) 。

因此找到最高位后,只要将后面填满 \(1\) 即可。

注意这里的 \(long \ long\) 位数。

时间复杂度 \(O(1)\)

空间复杂度 \(O(1)\)

代码

#include <bits/stdc++.h>

using namespace std;

int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int t;
cin >> t;
while (t--) {
long long l, r;
cin >> l >> r;
long long ans = l ^ r;
for (int i = 62;i >= 0;i--) {
if ((ans >> i) & 1) {
ans = (1LL << i + 1) - 1;
break;
}
}
cout << ans << '\n';
}
return 0;
}

# NC20860 兔子的区间密码的更多相关文章

  1. 记2017沈阳ICPC

    2017沈阳ICPC 10月20日 早上十点抵达沈阳,趁着老师还没到,跑去故宫游玩了一下,玩到一点多回到宾馆,顺便吃了群里大佬说很好吃的喜家德虾饺(真的好好吃),回到宾馆后身体有点不舒服了,头晕晕的, ...

  2. NOJ 1111 保险箱的密码 【大红】 [区间dp]

    传送门 保险箱的密码 [大红] 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte总提交 : 118            测 ...

  3. bzoj4750: 密码安全

    Description 有些人在社交网络中使用过许多的密码,我们通过将各种形式的信息转化为 01 信号,再转化为整数,可以将这个 人在一段时间内使用过的密码视为一个长度为 n 的非负整数序列 A_1, ...

  4. 【BZOJ3439】Kpm的MC密码 trie树+主席树

    Description 背景 想Kpm当年为了防止别人随便进入他的MC,给他的PC设了各种奇怪的密码和验证问题(不要问我他是怎么设的...),于是乎,他现在理所当然地忘记了密码,只能来解答那些神奇的身 ...

  5. C#构造Http 破解学校教务系统学生账号密码

    背景介绍 我们学校的教务系统的是以学生学号作为登陆账号,初始密码是自己的生日. 一点点想法 每次期末查成绩的时候,我都会有一个想法,要是我能跑到系统后台,把自己的成绩修改一下,那该时间多么舒坦的事情啊 ...

  6. 【BZOJ】【3439】Kpm的MC密码

    Trie树/可持久化线段树 神题啊……搞了我一下午= =(其实第233个提交也是我的) 我一开始的思路:这个找kpm串的过程,其实就跟在AC自动机上沿fail倒着往下走是差不多的(看当前是哪些点的后缀 ...

  7. HDU4745 - Two Rabbits(区间DP)

    题目大意 给出一个长度为n的环状序列,两只兔子各自从一个点出发,一个顺时针跳,一个逆时针跳,每个时刻都要求两只兔子所在的数字是相同的,兔子最多跳一个圈~~~问兔子们最多能跳多少次 题解 一个逆时针跳, ...

  8. 【BZOJ3439】 Kpm的MC密码 (TRIE+主席树)

    3439: Kpm的MC密码 Description 背景 想Kpm当年为了防止别人随便进入他的MC,给他的PC设了各种奇怪的密码和验证问题(不要问我他是怎么设的...),于是乎,他现在理所当然地忘记 ...

  9. 基于visual Studio2013解决算法导论之051区间树

     题目 区间树 解决代码及点评 #include <stdio.h> #include <string.h> #include <iostream> #def ...

随机推荐

  1. Springmvc 如何配置一个MAVEN项目,eclipse视图详解

    1,首先主页创建一个maven project项目, 2-3,创建完成会报错因为缺少WEB-INF文件右键点击选取,会自动创建web.xml文件 4 ,调试版本 因为默认创建的maven版本不支持,所 ...

  2. IDEA打包javaFX及踩坑解决

    开门见山的说,先打包,再说坑. File-->Project Structure --> Artifacts-->(此处点加号)JAR-->From modules with ...

  3. Redis为什么变慢了?透彻解读如何排查Redis性能问题

    Redis 作为优秀的内存数据库,其拥有非常高的性能,单个实例的 OPS 能够达到 10W 左右.但也正因此如此,当我们在使用 Redis 时,如果发现操作延迟变大的情况,就会与我们的预期不符. 你也 ...

  4. Visual Studio之安装(更新,扩展)速度缓慢解决方案

    一.背景 小伙伴们在安装visual studio,或者更新,扩展vs功能时,在家里网速正常的情况下,可能出现进度十分缓慢的问题,如何解决呢? 二.解决思路 修改hosts文件 1.地址:默认安装在 ...

  5. Django安装+创建一个Django项目

    安装 选用pycharm    在终端输入命令:pip install django 安装完成后创建项目 1.在你想创建项目的目录下输入下面的代码 2.django-admin startprojec ...

  6. 【CSAPP】Cache Lab 实验笔记

    cachelab这节先让你实现个高速缓存模拟器,再在此基础上对矩阵转置函数进行优化,降低高速缓存不命中次数.我的感受如上一节,实在是不想研究这些犄角旮旯的优化策略了. 前期准备 我实验的时候用到了va ...

  7. 手把手教你在Linux中快速检测端口的 3 个小技巧

    一个执着于技术的公众号 前言 无论是要解决网络连接问题还是配置防火墙,第一件事是要检查系统实际打开了哪些端口. 本文介绍了几种快速查找 Linux 系统上哪些端口向外部开放的方法. 什么是开放端口 监 ...

  8. .NET混合开发解决方案10 WebView2控件调用网页JS方法

    系列目录     [已更新最新开发文章,点击查看详细] WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1 WebView2简介 .NE ...

  9. linux下nginx软件的学习

    参考博客 1.nginx是什么 nginx是一个开源的,支持高性能,高并发的web服务和代理服务软件.它是开源的软件. nginx比它大哥apache性能改进许多,nginx占用的系统资源更少,支持更 ...

  10. python和pycharm下载与安装

    python解释器 1.python的由来 Python诞生于1989年的一个圣诞节,其创作者Guido van Rossum为了打发圣诞节假期的无聊,便开始了Python语言的编写.Python第一 ...