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

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 = 9Output:YesExplanation:

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 = 27Output:YesExplanation:

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;` `}` |

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

`<script>` `// Javascript 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` `function` `ifPossible(X, Y)` `{` ` ` `if` `(X > Y)` ` ` `{` ` ` `var` `temp = X;` ` ` `X = Y;` ` ` `Y =temp;` ` ` `}` ` ` `// Check for the two conditions` ` ` `if` `((X + Y) % 5 == 0 && 3 * X >= 2 * Y)` ` ` `document.write( ` `"Yes"` `);` ` ` `else` ` ` `document.write( ` `"No"` `);` `}` `// Driver code` `var` `X = 33, Y = 27;` `ifPossible(X, Y);` `// This code is contributed by rutvik_56.` `</script>` |

**Output:**

Yes

Time Complexity: O(1)

Auxiliary Space: O(1)