A. XOR Equation
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Two positive integers a and b have a sum of s and a bitwise XOR of x. How many possible values are there for the ordered pair (a, b)?
Input
The first line of the input contains two integers s and x (2 ≤ s ≤ 1012, 0 ≤ x ≤ 1012), the sum and bitwise xor of the pair of positive integers, respectively.
Output
Print a single integer, the number of solutions to the given conditions. If no solutions exist, print 0.
Examples
Input
9 5
Output
4
Input
3 3
Output
2
Input
5 2
Output
0
Note
In the first sample, we have the following solutions: (2, 7), (3, 6), (6, 3), (7, 2).
In the second sample, the only solutions are (1, 2) and (2, 1).
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define LL long long
using namespace std;
int main()
{
LL a,b;
while(scanf("%I64d%I64d",&a,&b)!=EOF)
{
LL i,j;
LL ans=0;
if((a-b)>=0&&(a-b)%2==0)
{
LL wc=(a-b)/2;
int cut=0;
bool flag=true;
if(a==b)
ans-=2;
while(b)
{
if(b&1)
{
cut++;
if(wc&1)
{
flag=false;
}
}
if(!flag)
{
break;
}
b/=2,wc/=2;
}
if(!flag) ans = 0;
else ans += (1LL<<cut);
}
printf("%I64d\n",ans);
}
return 0;
}