Skip to content
Related Articles

Related Articles

Improve Article

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

  • Last Updated : 26 Apr, 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 <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

 

Attention reader! Don’t stop learning now. Participate in the Scholorship Test for First-Step-to-DSA Course for Class 9 to 12 students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :