Description
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.
Sample Input
9 5
4
3 3
2
5 2
0
Hint
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).
ai bi ai^bi ai&bi
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
当ai&bi为1时,只有一种情况,ai,bi都为1
当ai&bi为0时,如果ai^bi为0,也只有一种情况
如果ai^bi为1,会有两种情况
当n为0时,算出的结果存在两种情况a为0,b为s,与a为s,b为0,要求a,b为正,故应减去这两种
在进行判断时如果出现1 1的情况则不存在
#include<stdio.h>
#define LL long long
int main()
{
LL s,x,n,ans;
int i;
while(~scanf("%lld%lld",&s,&x))
{
n=s-x;
ans=1;
if(n<0||n%2)
ans=0;
else
{
n>>=1;
for(i=0;i<60;i++)
{
if(((n>>i)&1)&&((x>>i)&1))
{
ans=0;
break;
}
if(!((n>>i)&1)&&((x>>i)&1))
ans<<=1;
}
if(!n)
ans-=2;
}
printf("%lld\n",ans);
}
return 0;
}