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:
Sharti
Alex and a TV Show
Discrete Root
Quantifier Question
Little Artem and Random Variable
TOF
Hongcow's Game
Wilbur and Strings
Paint the edges of the tree
Magical Boxes
Giving Awards
Special Task
Prefix-Suffix Palindrome (Hard version)
Magic multisets
Ehab's REAL Number Theory Problem
Infinite Path
Hongcow Masters the Cyclic Shift
Balanced Ternary
Alyona and a Narrow Fridge
Decoding of Integer Sequences
Topological Sorting
Unsolvable
Dijkstra on sparse graphs
Pattern
Pudding Monsters
Bear and Poker
NEKO's Maze Game
Om Nom and Candies
Three Problems
Diverse Matrix
Morning run
Number of divisors / sum of divisors