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:
New Year Permutation
Letters and Question Marks
Fountains
Deduction Queries
Circle of Numbers
Addition on Segments
Cards
Parliament of Berland
Design Tutorial: Learn from Math
Wilbur and Trees
Cycles
Sereja and Intervals
Lost Array
Finding repetitions
Amr and Music
Magnum Opus
Bogosort
Dima and Game
Flows with demands
Road Repair in Treeland
Bear and Forgotten Tree 3
Wrong Answer on Test 233 (Hard Version)
Balanced Ternary
Max and Min
Primitive Root
New Year and the Acquaintance Estimation
Information Graph
Design Tutorial: Learn from Life
King of Thieves
Preparing for Merge Sort
Helping People
Make Good