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:
Cards
Finding Bridges Online
Processing Queries
Kuroni and the Celebration
Hostname Aliases
Adding Digits
Linear Diophantine Equation
Orac and Game of Life
Deduction Queries
Newton's method for finding roots
Encoding
Circle of Numbers
Gotta Go Fast
Equalize
Petr and Permutations
Fox And Polygon
Dima and Game
Arson In Berland Forest
Fibonacci Numbers
Fibonacci-ish
Dima and Two Sequences
Dima and Figure
Kay and Eternity
Cheap Travel
Fox and Card Game
Mystic Carvings
Hongcow's Game
Minkowski sum of convex polygons
Prefix-Suffix Palindrome (Hard version)
Check whether a graph is bipartite
Valid BFS?
Largest Submatrix 3