Little Girl and Maximum XOR CodeForces

A little girl loves problems on bitwise operations very much. Here's one of them.

You are given two integers l and r. Let's consider the values of for all pairs of integers a and b (l ≤ a ≤ b ≤ r). Your task is to find the maximum value among all considered ones.

Expression means applying bitwise excluding or operation to integers x and y. The given operation exists in all modern programming languages, for example, in languages C++ and Java it is represented as "^", in Pascal — as «xor».

Input

The single line contains space-separated integers l and r (1 ≤ l ≤ r ≤ 1018).

Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64d specifier.

Output

In a single line print a single integer — the maximum value of for all pairs of integers a, b (l ≤ a ≤ b ≤ r).

Example

Input
1 2
Output
3
Input
8 16
Output
31
Input
1 1
Output
0

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 
 5 ll L,R;
 6 
 7 int main()
 8 {   cin>>L>>R;
 9     int i;
10     for(i=63;i>=0;i--) if((L&(1ll<<i))^(R&(1ll<<i))) break;
11     ll ans=pow(2,i+1)-1;
12     cout<<ans<<endl;
13 } 
原文地址:https://www.cnblogs.com/zgglj-com/p/7710083.html