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).
Solution:
#include <bits/stdc++.h>
using namespace std;
int main() {
long long sum, x;
cin >> sum >> x;
long long a = (sum - x) / 2;
if (a < 0 || x + 2 * a != sum || (x & a) != 0) {
cout << 0 << endl;
return 0;
}
long long bits = 0;
long long tmp = x;
while (tmp > 0) {
bits += tmp & 1;
tmp >>= 1;
}
long long ans = 1LL << bits;
if (a == 0) {
ans -= 2;
}
cout << ans << endl;
return 0;
}
Related posts:
Euler's totient function
Long Beautiful Integer
Three Integers Again
Robbers' watch
Optimal Subsequences (Hard Version)
Cow and Vacation
Quantifier Question
New Year Santa Network
Color the Carpet
Lattice points inside non-lattice polygon
Close Vertices
Edge Weight Assignment
Array Shrinking
New Year Candles
Decreasing Debts
Morning run
Huffman Coding on Segment
Felicity is Coming!
JYPnation
To Play or not to Play
Ehab and Path-etic MEXs
Segments on the Line
NP-Hard Problem
Sereja and Algorithm
Koala and Notebook
Dijkstra Algorithm
Clockwork Bomb
Optimal Point on a Line
Function
Potions Homework
Happy Line
Berland SU Computer Network