A. Bits(Codeforces Round #276(div1)_html/css_WEB-ITnose

WBOY
Freigeben: 2016-06-24 11:54:39
Original
1280 Leute haben es durchsucht

A. Bits

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard 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.

Sample test(s)

input

31 22 41 10
Nach dem Login kopieren

output

137
Nach dem Login kopieren

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


第1次打div1,就赶上cf挂了,不算rating,在25分钟交了一发,判了半个多小时,最后返回个RE,竟然位运算爆int了,过了A题就睡觉去了

给出一段区间的左端点和右端点,求这段区间的二进制的1最多的最小的。

先把左区间L化为二进制,再把左区间的二进制的从最小位开始,每位变为1,因为这是在当前1的个数中最小的且大于L的。直到大于右区间R。

代码:

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;long long a[100];int main(){    long long l,r;    int n;    scanf("%d",&n);    while(n--)    {        scanf("%I64d%I64d",&l,&r);        memset(a,0,sizeof(a));        int cou=0;        long long ans=l;        while(l>0)        {            a[cou++]=(l%2);            l=l/2;        }        for(int i=0;; i++)        {            a[i]=1;            long long temp=0;            for(int j=0; j<max j temp if ans="temp;" else break printf return>        <br>        <br>        <p></p>        <p><strong><br> </strong></p>        <p><strong><br> </strong></p>                            </max></algorithm></cstring></cstdio></iostream>
Nach dem Login kopieren
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage