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>
typedef long long ll;

ll a,b;

ll work(ll a,ll b)
{
    if(a==b)return 1;
    
    ll t=1ll<<(63-__builtin_clzll(b));

    // printf("%d",64-__builtin_clzll(0));
    
    if(t>a&&t<=b)
    {
	ll ret=2*(t-a);
	b-=1ll<<(63-__builtin_clzll(b));
	if(!b)return ret+1;
	return ret+std::min(a,1ll<<(64-__builtin_clzll(b)));
    }
    else return t=1ll<<(63-__builtin_clzll(b)),work(a-t,b-t);
}

int main()
{
    scanf("%lld%lld",&a,&b);
    printf("%lld\n",work(a,b));
    
    return 0;
}