本文主要是介绍网课:第二章模拟、枚举与贪心---Bits,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
n组询问,每次给出一个区间l, r,你需要输出在这个区间内二进制表示中1的个数最多的数
如有多个答案,输出最小的那个
输入
第一行包含整数 n -查询次数( 1 ≤ n ≤ 10000 )。
下面每行 n 包含两个整数 li, ri --相应查询的参数( 0 ≤ li ≤ ri ≤ 1e18 )。
输出
对于每个查询,将答案打印在单独一行中。
做法
肯定不能for循环暴力。那我们就构造l到r内的二进制数,从区间内最小的数l开始,从最低位枚举把是0的位置,改为1,再看看有没有超区间的范围。
这篇关于网课:第二章模拟、枚举与贪心---Bits的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!