Dados dos números enteros N y M , la tarea es verificar si es posible obtener estos valores de X = 1 e Y = 0 respectivamente realizando las dos operaciones cualquier número de veces:
- Aumenta X e Y en 1, si y solo si x>0.
- Aumenta Y en 2, si y solo si y>0.
Ejemplos:
Entrada: N = 3, M = 4
Salida: Sí
Explicación:
Inicialmente X = 1, Y = 0
Operación 1: X = 2, Y = 1
Operación 1: X = 3, Y = 2
Operación 2: X = 3, Y = 4, por lo que se obtienen los valores finales, por lo que la respuesta es Sí.Entrada: N = 5, M = 2
Salida: No
Explicación:
No es posible obtener X = 5 e Y = 2 de X = 1 e Y = 0.
Enfoque: El problema anterior se puede resolver utilizando las siguientes observaciones:
- Si N es menor que 2 y M no es igual a cero , entonces no es posible obtener los valores finales, por lo que la respuesta es No.
- De lo contrario, reste N de M y si M ? 0 y M es divisible por 2 , entonces la respuesta es Sí .
- En todos los demás casos , la respuesta es No.
A continuación se muestra la implementación del enfoque anterior:
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>
Producción:
No
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)