Given two numbers and . Find the values of X and Y in the equations.
- A = X + Y
- B = X xor Y
The task is to make X as minimum as possible. If it is not possible to find any valid values for X and Y then print -1.
Input : A = 12, B = 8 Output : X = 2, Y = 10 Input : A = 12, B = 9 Output : -1
Let’s take a look at some bit in X, which is equal to 1. If the respective bit in Y is equal to 0, then one can swap these two bits, thus reducing X and increasing Y without changing their sum and xor. We can conclude that if some bit in X is equal to 1 then the respective bit in Y is also equal to 1. Thus, Y = X + B. Taking into account that X + Y = X + X + B = A, one can obtain the following formulas for finding X and Y:
- X = (A – B) / 2
- Y = X + B = (A + B) / 2
One should also notice that if A < B or A and B have different parity, then the answer doesn’t exist and output is -1. If X and (A – X) not equal to X then the answer is also -1.
Below is the implementation of the above approach :
# Python3 program to find the values of
# X and Y using the given equations
# Function to find the values of X and Y
def findValues(a, b):
# base condition
if ((a – b) % 2 == 1):
# required answer
print((a – b) // 2, (a + b) // 2);
# Driver Code
a = 12; b = 8;
# This code is contributed
# by Akanksha Rai
- Find n-variables from n sum equations with one missing
- Find 'N' number of solutions with the given inequality equations
- Find the repeating and the missing number using two equations
- Program to find root of an equations using secant method
- Find smallest values of x and y such that ax - by = 0
- Find the minimum value of m that satisfies ax + by = m and all values after m also satisfy
- Linear Diophantine Equations
- Number of solutions to Modular Equations
- Gaussian Elimination to Solve Linear Equations
- Using Chinese Remainder Theorem to Combine Modular equations
- System of Linear Equations in three variables using Cramer's Rule
- Count of values of x <= n for which (n XOR x) = (n - x)
- Number of values of b such that a = b + (a^b)
- Assign other value to a variable from two possible values
- Possible to form a triangle from array values
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.