Problem:
Score : 900 points

Problem Statement

Nukes has an integer that can be represented as the bitwise OR of one or more integers between A and B (inclusive).
How many possible candidates of the value of Nukes's integer there are?

Constraints

1 ≤ A ≤ B < 2^{60}

A and B are integers.

Input

The input is given from Standard Input in the following format:

A
B

Output

Print the number of possible candidates of the value of Nukes's integer.

Sample Input 1

7
9

Sample Output 1

4

In this case, A=7 and B=9. There are four integers that can be represented as the bitwise OR of a non-empty subset of {7, 8, 9}: 7, 8, 9 and 15.

Sample Input 2

65
98

Sample Output 2

63

Sample Input 3

271828182845904523
314159265358979323

Sample Output 3

68833183630578410

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int A,B;
inline int rd() {int r;scanf("%d",&r);return r;}
int main() {
	A = rd(), B = rd();
	if (A==B) return puts("1"), 0;
	int w,k;
	for (w=61;((1LL<<w)&A) == ((1LL<<w)&B);w--);
	A &= (1LL<<(w+1)) - 1, B &= (1LL<<(w+1)) - 1;
	LL ans = (1<<(w+1)) - A;
	
	for(k = w-1;k >= 0 && (B & (1LL << k)) == 0;-- k);
    if(A > (1LL << (k+1))) ans -= A - (1LL << (k+1));
	cout << ans << endl;
	return 0;
}