Given two integers N and M, the task is to check if it is possible to obtain these values from X = 1 and Y = 0 respectively by performing the two operations any number of times::
- Increase X and Y by 1, if and only if x>0.
- Increase Y by 2, if and only if y>0.
Examples:
Input: N = 3, M = 4
Output: Yes
Explanation:
Initially X = 1, Y = 0
Operation 1: X = 2, Y = 1
Operation 1: X = 3, Y = 2
Operation 2: X = 3, Y = 4, hence the final values are got so the answer is Yes.Input: N = 5, M = 2
Output: No
Explanation :
Obtaining X = 5 and Y = 2 from X = 1 and Y = 0 is not possible.
Approach: The above problem can be solved using the below observations:
- If N is less than 2 and M is not equal to zero, then getting the final values is not possible, hence the answer is No.
- Otherwise, subtract N from M and if M ? 0 and M is divisible by 2 then the answer is Yes.
- In all other cases, the answer is No.
Below is the implementation of the above approach:
// C++ program for the above approach #include <bits/stdc++.h> using namespace std;
// Function that find given x and y // is possible or not bool is_possible( int x, int y)
{ // Check if x is less than 2 and
// y is not equal to 0
if (x < 2 && y != 0)
return false ;
// Perform subtraction
y = y - x + 1;
// Check if y is divisible by 2
// and greater than equal to 0
if (y % 2 == 0 && y >= 0)
return true ;
else
return false ;
} // Driver Code int main()
{ // Given X and Y
int x = 5, y = 2;
// Function Call
if (is_possible(x, y))
cout << "Yes" ;
else
cout << "No" ;
return 0;
} |
// Java program for the above approach class GFG{
// Function that find given x and y // is possible or not static boolean is_possible( int x, int y)
{ // Check if x is less than 2 and
// y is not equal to 0
if (x < 2 && y != 0 )
return false ;
// Perform subtraction
y = y - x + 1 ;
// Check if y is divisible by 2
// and greater than equal to 0
if (y % 2 == 0 && y >= 0 )
return true ;
else
return false ;
} // Driver Code public static void main(String[] args)
{ // Given X and Y
int x = 5 , y = 2 ;
// Function Call
if (is_possible(x, y))
System.out.println( "Yes" );
else
System.out.println( "No" );
} } // This code is contributed by rock_cool |
# Python3 program for the above approach # Function that find given x and y # is possible or not def is_possible(x, y):
# Check if x is less than 2 and
# y is not equal to 0
if (x < 2 and y ! = 0 ):
return false
# Perform subtraction
y = y - x + 1
# Check if y is divisible by 2
# and greater than equal to 0
if (y % 2 = = 0 and y > = 0 ):
return True
else :
return False
# Driver Code if __name__ = = '__main__' :
# Given X and Y
x = 5
y = 2
# Function Call
if (is_possible(x, y)):
print ( "Yes" )
else :
print ( "No" )
# This code is contributed by Mohit Kumar |
// C# program for the above approach using System;
class GFG{
// Function that find given x and y // is possible or not static bool is_possible( int x, int y)
{ // Check if x is less than 2 and
// y is not equal to 0
if (x < 2 && y != 0)
return false ;
// Perform subtraction
y = y - x + 1;
// Check if y is divisible by 2
// and greater than equal to 0
if (y % 2 == 0 && y >= 0)
return true ;
else
return false ;
} // Driver Code public static void Main( string [] args)
{ // Given X and Y
int x = 5, y = 2;
// Function Call
if (is_possible(x, y))
Console.Write( "Yes" );
else
Console.Write( "No" );
} } // This code is contributed by Ritik Bansal |
<script> // Javascript program for the above approach // Function that find given x and y // is possible or not function is_possible(x, y)
{ // Check if x is less than 2 and
// y is not equal to 0
if (x < 2 && y != 0)
return false ;
// Perform subtraction
y = y - x + 1;
// Check if y is divisible by 2
// and greater than equal to 0
if (y % 2 == 0 && y >= 0)
return true ;
else
return false ;
} // Driver code // Given X and Y let x = 5, y = 2; // Function Call if (is_possible(x, y))
document.write( "Yes" );
else document.write( "No" );
// This code is contributed by divyesh072019 </script> |
No
Time Complexity: O(1)
Auxiliary Space: O(1)