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;
    }
  • 相关阅读:
    Python基础之基本数据类型
    Python基础之变量
    mysql数据库
    进程与线程
    并发编程
    网络编程
    内置函数(魔法方法)
    组合,封装,访问限制机制,property装饰器
    面向对象之继承
    Web开发中最致命的8个小错误
  • 原文地址:https://www.cnblogs.com/candy99/p/5986376.html
Copyright © 2011-2022 走看看