627A.XOR Equation
2016-03-12 20:32
232 查看
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
output
input
output
input
output
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).
先贴我未通过的程序
[python] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
#!/usr/bin/python
#-*-coding:utf-8 -*-
s,x=map(int,raw_input().split(' '))
count=0
if s>x or s<3:
if s%2==0:
n=s/2+1
else:
n=(s+1)/2
for i in range(1,n):
a=i
b=s-i
if a^b==x:
count=count+2
if a==b:
count=count-1
elif s==x:
count=s-1
elif x>s:
count=0
print count
Runtime error
[python] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
def solve(s, x):
d = (s - x)
if x << 1 & d or d%2 or d<0: return 0
return 2 ** (bin(x).count('1')) - (0 if d else 2)
s, x = map(int, raw_input().split(' '))
print(solve(s, x))
当x左移1位与d==1或者d%2==1或s<x时,直接返回0否则返回2**(bin(x).count('1'))-(0 if d else 2)
数学问题吧
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).
先贴我未通过的程序
[python] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
#!/usr/bin/python
#-*-coding:utf-8 -*-
s,x=map(int,raw_input().split(' '))
count=0
if s>x or s<3:
if s%2==0:
n=s/2+1
else:
n=(s+1)/2
for i in range(1,n):
a=i
b=s-i
if a^b==x:
count=count+2
if a==b:
count=count-1
elif s==x:
count=s-1
elif x>s:
count=0
print count
Runtime error
[python] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
def solve(s, x):
d = (s - x)
if x << 1 & d or d%2 or d<0: return 0
return 2 ** (bin(x).count('1')) - (0 if d else 2)
s, x = map(int, raw_input().split(' '))
print(solve(s, x))
当x左移1位与d==1或者d%2==1或s<x时,直接返回0否则返回2**(bin(x).count('1'))-(0 if d else 2)
数学问题吧