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


目录
相关文章
|
容器
华为机试HJ89:24点运算
华为机试HJ89:24点运算
139 0
华为机试HJ57:高精度整数加法
华为机试HJ57:高精度整数加法
华为机试HJ56:完全数计算
华为机试HJ56:完全数计算
|
C++ Python
华为机试HJ50:四则运算
华为机试HJ50:四则运算
158 0
P4057 [Code+#1]晨跑(数学分析,辗转相除法模板(欧几里得算法))
P4057 [Code+#1]晨跑(数学分析,辗转相除法模板(欧几里得算法))
54 0
数论整理之欧几里得算法gcd
数论整理之欧几里得算法gcd
华为机试每日一练--第八题: 取近似值
华为机试每日一练--第八题: 取近似值
华为机试每日一练--第八题: 取近似值
|
Java Shell
Codeforces Round #746 (Div. 2) D - Hemose in ICPC ?(交互 二分 欧拉序)
Codeforces Round #746 (Div. 2) D - Hemose in ICPC ?(交互 二分 欧拉序)
153 0