Codeforces 627A XOR Equation

 XOR Equation
Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u

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 ≤ 10120 ≤ 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值