# Check if X and Y can be made zero by using given operation any number of times

Last Updated : 21 Dec, 2021

Given two integers X and Y, the task is to check if these two integers can be made equal to 0 by using the given operation any number of times. An operation is described as follows –

• Choose an arbitrary integer Z.
• Update the values with either of the following values:
• X = X – 2*Z and Y = Y – 3*Z
• X = X – 3*Z and Y = Y – 2*Z

Examples:

Input: X = 6, Y = 9
Output: Yes
Explanation:
Operation 1: Choose Z = 3, X = 6 – 2*3 = 0 and Y = 9 – 3*3 = 0
Since X and Y can be made equal to 0 using 1 operation, the required answer is Yes.
Input: X = 33, Y = 27
Output: Yes
Explanation:
Operation 1: Choose Z = 9, X := 33 – 3*9 = 6 and Y := 27 – 2*9 = 9
Operation 2: Choose Z = 3, X := 6 – 2*3 = 0 and Y := 9 – 3*3 = 0
Since X and Y can be made equal to 0 using 2 operation, the required answer is Yes.

Approach: Let’s assume X ? Y. Then the answer is Yes if two following conditions holds:

• (X + Y) mod 5 = 0: because after each operation the value (X + Y) mod 5 does not change.
Let’s assume some arbitrary number Z has been chosen.
Therefore, the value (X + Y) will be changed to

`((X - 3Z) + (Y - 2Z))`
• This is equal to

`(X + Y - 5Z)`
• For this value to be equal to 0, X + Y = 5Z. Therefore, on taking mod on both the sides, (X + Y) mod 5 has to be equal to 0.
• 3*X >= 2*Y so that the subtraction doesnt make the values of X and Y negative.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach`   `#include ` `using` `namespace` `std;`   `// Function to check if X and Y` `// can be made equal to zero by` `// using given operation any number of times` `void` `ifPossible(``int` `X, ``int` `Y)` `{` `    ``if` `(X > Y)` `        ``swap(X, Y);`   `    ``// Check for the two conditions` `    ``if` `((X + Y) % 5 == 0 and 3 * X >= 2 * Y)` `        ``cout << ``"Yes"``;` `    ``else` `        ``cout << ``"No"``;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `X = 33, Y = 27;`   `    ``ifPossible(X, Y);`   `    ``return` `0;` `}`

## Java

 `// Java implementation of the approach` `class` `GFG` `{`   `// Function to check if X and Y` `// can be made equal to zero by` `// using given operation any number of times` `static` `void` `ifPossible(``int` `X, ``int` `Y)` `{` `    ``if` `(X > Y)` `        ``swap(X, Y);`   `    ``// Check for the two conditions` `    ``if` `((X + Y) % ``5` `== ``0` `&& ``3` `* X >= ``2` `* Y)` `        ``System.out.print(``"Yes"``);` `    ``else` `        ``System.out.print(``"No"``);` `}` `static` `void` `swap(``int` `x, ``int` `y)` `{` `    ``int` `temp = x;` `    ``x = y;` `    ``y = temp;` `}`   `// Driver code` `public` `static` `void` `main(String[] args)` `{` `    ``int` `X = ``33``, Y = ``27``;`   `    ``ifPossible(X, Y);` `}` `}`   `// This code is contributed by Rajput-Ji`

## Python3

 `# Python3 implementation of the approach`   `# Function to check if X and Y` `# can be made equal to zero by` `# using given operation any number of times` `def` `ifPossible(X, Y):` `    ``if` `(X > Y):` `        ``X, Y ``=` `Y, X`   `    ``# Check for the two conditions` `    ``if` `((X ``+` `Y) ``%` `5` `=``=` `0` `and` `3` `*` `X >``=` `2` `*` `Y):` `        ``print``(``"Yes"``)` `    ``else``:` `        ``print``(``"No"``)`   `# Driver code` `X ``=` `33` `Y ``=` `27`   `ifPossible(X, Y)`   `# This code is contributed by mohit kumar 29`

## C#

 `// C# implementation of the approach` `using` `System;`   `class` `GFG` `{`   `// Function to check if X and Y` `// can be made equal to zero by` `// using given operation any number of times` `static` `void` `ifPossible(``int` `X, ``int` `Y)` `{` `    ``if` `(X > Y)` `        ``swap(X, Y);`   `    ``// Check for the two conditions` `    ``if` `((X + Y) % 5 == 0 && 3 * X >= 2 * Y)` `        ``Console.WriteLine(``"Yes"``);` `    ``else` `        ``Console.WriteLine(``"No"``);` `}` `static` `void` `swap(``int` `x, ``int` `y)` `{` `    ``int` `temp = x;` `    ``x = y;` `    ``y = temp;` `}`   `// Driver code` `public` `static` `void` `Main()` `{` `    ``int` `X = 33, Y = 27;`   `    ``ifPossible(X, Y);` `}` `}`   `// This code is contributed by Yash_R`

## Javascript

 ``

Output:

`Yes`

Time Complexity: O(1)

Auxiliary Space: O(1)

Previous
Next