Bits (Codeforces 484A)
Tags: Others, bitmasks

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.

Note: The binary representations of numbers from 1 to 10 are listed below:110 = 12210 = 102310 = 112410 = 1002510 = 1012610 = 1102710 = 1112810 = 10002910 = 100121010 = 10102

Sample Inputs:
3
1 2
2 4
1 10

Sample Outputs:
1
3
7

Solution (Python):
def main():

    def find_or(x, y):
        i = 1
        while x | i <= y:
            x |= i
            i <<= 1
        return x
    n = int(input())
    for _ in range(n):
        (x, y) = map(int, input().split())
        result = find_or(x, y)
        print(result)
if __name__ == '__main__':
    main()

Solution (Python):
x = input()
x = int(x)
for i in range(x):
    (y, z) = input().split()
    y = int(y)
    z = int(z)
    while y | y + 1 <= z:
        y = y | y + 1
    print(y)

Solution (Python):
x = input()
x = int(x)
count = 0
for i in range(x):
    (y, z) = input().split()
    y = int(y)
    z = int(z)
    while y | y + 1 <= z:
        y = y | y + 1
    print(y)