Is it possible to reach N and M from 1 and 0 respectively as per given condition
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++
// 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
// 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
# 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#
// 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 |
Javascript
<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> |
Output:
No
Time Complexity: O(1)
Auxiliary Space: O(1)