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:
Game with Chips
Tài liệu giáo khoa chuyên Tin 3 quyển
Maximum Reduction
Rational Resistance
Composite Coloring
Fibonacci-ish II
Ebony and Ivory
Optimal schedule of jobs given their deadlines and durations
Curious Array
Salazar Slytherin's Locket
Design Tutorial: Learn from Life
Matching vs Independent Set
Modular Multiplicative Inverse
Voting for Photos
Product transformation
Divisor Paths
Counting Skyscrapers
Superhero's Job
Paint the Numbers
Primitive Root
New Year Candles
Gotta Go Fast
Perfect Triples
Movie Fan
Fox and Card Game
Gambling Nim
Dijkstra on sparse graphs
Welfare State
TOF
Graph Decomposition
Three Problems
Travel Cards