您的位置:首页 > 其它

Codeforces 627A XOR Equation

2016-09-20 18:29 281 查看
 XOR Equation
Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d
& %I64u
Submit Status

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

Input
9 5


Output
4


Input
3 3


Output
2


Input
5 2


Output
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: