Check if it is possible to make x and y zero at same time with given operation
Given two numbers X and Y. The task is to check whether X and Y can be reduced to zero at the same time by performing the following operation any number of times:
- Choose any natural number (say z) and reduce X and Y as one of the following at each operation:
- X = X – z and Y = Y – 2*z
- X = X – 2*z and Y = Y – z
Input: X = 6, Y = 9
We can perform operation in following way:
if z = 1, then
X = X – 2*z = 6 – 2*(1)
Y = Y – z = 9 – 1
=> X = 4 & Y = 8
Now again if z = 4, then
X = X – z = 4 – 4
Y = Y – 2*z = 8 – 2*(4)
=> X = 0 & Y = 0
Therefore, X & Y become zero in 2 steps assuming z as 1 and 4 respectively.
Input: X = 1, Y = 1
We don’t have any possible value for z such that X & Y can become zero simultaneously.
Below are the observation for the given problem statement:
- Since X and Y are updated to (X – z and Y – 2*z) or (X – 2*z and Y – z), therefore after n number of operations (X + Y) is updated to (X + Y – 3*n*z). Hence X and Y can be reduced to zero at simultaneously if (X+Y)%3 equals 0.
- At each step one of the X or Y is reduced by 2*z. To reduced X and Y simultaneously zero it must satisfy this condition: max(X, Y)≤ 2*min(X, Y).
Let X = 6 and Y = 15
Since (X+Y)%3 = (21%3) = 0
As our first condition is satisfied,
But by taking z = 6
X = X – z = 6 – 6 = 0
Y = Y – 2*z = 15 – 12 = 3
Since Y is not less than or equals to 2*X, therefore X and Y cannot be reduced to zero at same time.
If the above two conditions satisfy the values of X and Y, then X and Y can be reduced to 0 simultaneously.
Below is the implementation of the above approach:
Time Complexity: O(1)