zoukankan      html  css  js  c++  java
  • CodeForces 485C Bits[贪心 二进制]

    C. Bits

    time limit per test1 second

    memory limit per test256 megabytes

    inputstandard input

    outputstandard output

    Let's denote as  the number of bits set ('1' bits) in the binary representation of the non-negative integer x.

    You are given multiple queries consisting of pairs of integers l and r. For each query, find the x, such that l ≤ x ≤ r, and  is maximum possible. If there are multiple such numbers find the smallest of them.

    Input

    The first line contains integer n — the number of queries (1 ≤ n ≤ 10000).

    Each of the following n lines contain two integers li, ri — the arguments for the corresponding query (0 ≤ li ≤ ri ≤ 1018).

    Output

    For each query print the answer in a separate line.

    Examples

    input

    3

    1 2

    2 4

    1 10

    output

    1

    3

    7

    Note

    The binary representations of numbers from 1 to 10 are listed below:

    110 = 12

    210 = 102

    310 = 112

    410 = 1002

    510 = 1012

    610 = 1102

    710 = 1112

    810 = 10002

    910 = 10012

    1010 = 10102


     

    题意:求l和r之间二进制1的个数最多的数字x


     

    首先证明x一定在l的基础上

    然后从低位贪心把0变成1

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    #include <queue>
    using namespace std;
    typedef long long ll;
    inline ll read(){
        char c=getchar();ll x=0,f=1;
        while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
        return x*f;
    }
    ll T,l,r;
    int main(int argc, const char * argv[]) {
        T=read();
        while(T--){
            l=read();r=read();
            ll t=1;
            while(l<r){
                if((l|t)>r) break;
                l|=t;
                t<<=1;
            }
            printf("%I64d
    ",l);
        }
        return 0;
    }
  • 相关阅读:
    从0到1构建适配不同端(微信小程序、H5、React-Native 等)的taro + dva应用
    一个基于Ionic3.x cordova的移动APP demo
    基于 MUI 构建一个具有 90 +页面的APP应用
    风清杨之Oracle的安装与说明
    浅析C#中的“==”和Equals
    window.open()的使用
    动态生成级联下拉框和多选框
    生成二维码的两种方式
    登录添加验证码校验
    oracle11g的安装以及配置
  • 原文地址:https://www.cnblogs.com/candy99/p/5986376.html
Copyright © 2011-2022 走看看