# Is it possible to reach N and M from 1 and 0 respectively as per given condition

• Last Updated : 04 Aug, 2021

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:

1. 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.
2. Otherwise, subtract N from M and if M ? 0 and M is divisible by 2 then the answer is Yes.
3. In all other cases, the answer is No.

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach``#include ``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

 ``

Output:

`No`

Time Complexity: O(1)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up