codeforces C. Bits(数学题+或运算)

简介:
题意:给定一个区间,求区间中的一个数,这个数表示成二进制的时候,数字1的个数最多!
如果有多个这样的数字,输出最小的那个!

思路:对左区间的这个数lx的二进制 从右往左将0变成1,直到lx的值大于右区间的值rx!


#include<iostream> 
#include<cstring>
#include<cstdio> 
#include<algorithm>

using namespace std;

int main(){
    long long a, b;
    int n;
    cin>>n;
    while(n--){
        cin>>a>>b;
        for(long long i=1; (a|i) <= b; i<<=1)
            a |= i;
        cout<<a<<endl; 
    }
    return 0; 
}


目录
相关文章
|
算法
初阶OI素数算法——埃拉托尼斯筛
时间复杂度比较优秀且易于理解的素数筛选法
76 0
|
6月前
|
C语言
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
|
6月前
【每日一题Day350】LC2652倍数求和 | 数学+容斥原理
【每日一题Day350】LC2652倍数求和 | 数学+容斥原理
43 0
|
容器
华为机试HJ89:24点运算
华为机试HJ89:24点运算
139 0
华为机试HJ57:高精度整数加法
华为机试HJ57:高精度整数加法
P4057 [Code+#1]晨跑(数学分析,辗转相除法模板(欧几里得算法))
P4057 [Code+#1]晨跑(数学分析,辗转相除法模板(欧几里得算法))
49 0
【每日一题Day35】LC878第N个神奇数字 | 二分查找 找规律 + 数学
思路:将问题**“第n个神奇数是x”转化为“小于等于x的神奇数有n个”**,由于x越大n一定越大,因此可以使用二分法查找一个神奇数小于等于n的区间(0,right],最后返回右边界
201 0
【每日一题Day35】LC878第N个神奇数字 | 二分查找 找规律 + 数学
PTA 1034 有理数四则运算 (20 分)
本题要求编写程序,计算 2 个有理数的和、差、积、商。
112 0
[Codeforces] 1557 C Moamen and XOR(组合数学)
题意: 用 < 2k的数填充到长度为n的数组中,要使得数组中所有数& >= ^,问方案数 显然,当k == 1的时候,答案为1,只有当所有的数全为1的情况才可以满足题意 对于其他的情况{ 用小于2k的数进行填充,那么说明填充的数字的二进制位数最多可以有k kk位, 从数的个数的角度来说,奇数个1^ 之后的结果是1,偶数个1^ 之后的结果是0,而对于0来讲,不管多少个0,^起来结果都是0 只要有一个0,那么说这一位上&之后就是0,而为了让^为0,那么只能够选择偶数个1 如果某一位上&为1,那么^为1的情况需要讨论n的奇偶性
119 0