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 <bits/stdc++.h> ` `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; ` `} ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

## 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 ` |

*chevron_right*

*filter_none*

**Output:**

Yes

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.