问题1005--二进制位

1005: 二进制位

时间限制: 1 Sec  内存限制: 128 MB
提交: 190  解决: 69
[提交] [状态] [讨论版] [命题人:]

题目描述

在计算机里面,我们知道每个整数都可以转化成二进制数,我们假定用popcount(x)表示x变成二进制数,包含多少个1,比如5变成2进制后为101,那么popcount(5)=2。现在有t个询问,每个询问给你一个区间范围[ai, bi],问你在这个范围内,找到一个x,使得popcount(x)最大,如果有多个答案,输出最小的x。

输入

输入t,然后t行每行输入ai, bi

输出

输出t行,每行输出相应的答案

样例输入 Copy

3
1 2
2 4
1 10

样例输出 Copy

1
3
7

提示

110 = 12
210 = 102
310 = 112
410 = 1002
510 = 1012
610 = 1102
710 = 1112
810 = 10002
910 = 10012
1010 = 10102

以上列举了110的二进制形式

1<=t<=10000

0<= ai <= bi <= 10^18

来源/分类