¿Es posible alcanzar N y M desde 1 y 0 respectivamente según la condición dada?

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:
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:

  1. 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.
  2. De lo contrario, reste N de M y si M ? 0 y M es divisible por 2 , entonces la respuesta es .
  3. 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)

Publicación traducida automáticamente

Artículo escrito por rutvik_56 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *