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:
Double Permutation Inc
Vanya and Cubes
Disjoint Set Union
Substring Search
Wilbur and Points
Yuhao and a Parenthesis
Looksery Party
Chicken or Fish?
Petr and Permutations
Copying Data
Pavel and Triangles
And after happily lived ever they
Farewell Party
Minimum Euler Cycle
The Stern-Brocot tree and Farey sequences
Trips
Meeting Her
Desk Disorder
Sereja and Algorithm
Splitting the Uniqueness
Envy
Amr and Music
Increase Sequence
Booking System
Choosing Subtree is Fun
Giving Awards
Resource Distribution
Bulbo
Vertical decomposition
The Brand New Function
Practice
Bits And Pieces