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:
Ternary Search
New Year and the Sphere Transmission
Maximum flow - Push-relabel method improved
Beautiful Bracket Sequence (hard version)
Kay and Snowflake
Bad Cryptography
Almost Same Distance
New Year Permutation
Prefix function. Knuth–Morris–Pratt algorithm
Ehab's Last Theorem
New Year Present
Pearls in a Row
Booking System
Divisor Tree
Pattern
Washer, Dryer, Folder
Road Repairs
Dirty Deeds Done Dirt Cheap
Depth First Search
Segment Tree
One-Based Arithmetic
Number of divisors / sum of divisors
Bellman-Ford Algorithm
Egor and an RPG game
Beautiful IP Addresses
Flawed Flow
Một số vấn đề đáng chú ý trong môn Tin học - Phan Công Minh
Checking a graph for acyclicity and finding a cycle in $O(M)$
Powered Addition
Cow and Fields
Not Same
Design Tutorial: Inverse the Problem