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:
Escaping on Beaveractor
Arkady and a Nobody-men
Awesome Substrings
Segments on the Line
Bingo!
Read Time
Cow and Treats
Princesses and Princes
Pavel and Triangles
Memory for Arrays
Petr and Permutations
Bathroom terminal
Little Artem and 2-SAT
Uniqueness
Artem and Array
New Year and Finding Roots
Cut the pie
Radio stations
Attack on Red Kingdom
Jordan Smiley
Movie Fan
Intersection Point of Lines
Little Artem and Matrix
Summer Homework
Hongcow Masters the Cyclic Shift
Oh Sweet Beaverette
Big Data
King's Path
New Year and the Factorisation Collaboration
New Year Shopping
Sum of Odd Integers
Cheap Travel