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; 
}


目录
相关文章
|
7月前
【每日一题Day350】LC2652倍数求和 | 数学+容斥原理
【每日一题Day350】LC2652倍数求和 | 数学+容斥原理
47 0
|
容器
华为机试HJ89:24点运算
华为机试HJ89:24点运算
147 0
数论整理之欧几里得算法gcd
数论整理之欧几里得算法gcd
103 0
【每日一题Day87】LC1819序列中不同最大公约数的数 | 数学
由于数组中的最大公约数不可能超过子序列的最大值,因此可以枚举所有可能的最大公约数来判断当前的公约数是否有子序列构成。
118 0
|
人工智能
唯一分解定理(算术基本定理)详解——hdu5248和lightoj1341
任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积 N=P1a1 P2a2P3a3…Pnan,这里P1<P2<P3…<Pn均为质数,其中指数ai是正整数。这样的分解称为 N 的标准分解式.
306 0
|
算法 UED
[解题报告]《算法零基础100讲》(第49讲) 位运算 (右移)
[解题报告]《算法零基础100讲》(第49讲) 位运算 (右移)
[解题报告]《算法零基础100讲》(第49讲) 位运算 (右移)
|
存储 算法
[解题报告]《算法零基础100讲》(第7讲) 素数判定
[解题报告]《算法零基础100讲》(第7讲) 素数判定
[解题报告]《算法零基础100讲》(第7讲) 素数判定
|
算法 Android开发
[解题报告]《算法零基础100讲》(第13讲) 最大公约数
[解题报告]《算法零基础100讲》(第13讲) 最大公约数
[解题报告]《算法零基础100讲》(第13讲) 最大公约数
[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的奇偶性
125 0