Encuentre los valores de X e Y en las ecuaciones dadas

Dados dos números  A      B      . Encuentra los valores de X e Y en las ecuaciones. 
 

  1. A = X + Y
  2. B = X x o Y

La tarea es hacer que X sea lo mínimo posible. Si no es posible encontrar ningún valor válido para X e Y, imprima -1.
Ejemplos: 
 

Input : A = 12, B = 8
Output : X = 2, Y = 10

Input : A = 12, B = 9
Output : -1

Echemos un vistazo a algún bit en X, que es igual a 1. Si el bit respectivo en Y es igual a 0, entonces uno puede intercambiar estos dos bits, reduciendo así X y aumentando Y sin cambiar su suma y xor. Podemos concluir que si algún bit en X es igual a 1 entonces el respectivo bit en Y también es igual a 1. Así, Y = X + B. Teniendo en cuenta que X + Y = X + X + B = A, uno puede obtener las siguientes fórmulas para encontrar X e Y:
 

  • X = (A – B) / 2
  • Y = X + B = (A + B) / 2

También se debe notar que si A < B o A y B tienen paridad diferente, entonces la respuesta no existe y la salida es -1. Si X y (A – X) no son iguales a X, entonces la respuesta también es -1.
A continuación se muestra la implementación del enfoque anterior:
 

C++

// CPP program to find the values of
// X and Y using the given equations
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the
// values of X and Y
void findValues(int a, int b)
{
    // base condition
    if ((a - b) % 2 == 1) {
        cout << "-1";
        return;
    }
 
    // required answer
    cout << (a - b) / 2 << " " << (a + b) / 2;
}
 
// Driver Code
int main()
{
    int a = 12, b = 8;
 
    findValues(a, b);
 
    return 0;
}

Java

// Java program to find the values of
// X and Y using the given equations
import java.io.*;
 
class GFG
{
     
// Function to find the
// values of X and Y
static void findValues(int a, int b)
{
    // base condition
    if ((a - b) % 2 == 1)
    {
            System.out.println ("-1");
        return;
    }
 
    // required answer
    System.out.println (((a - b) / 2)+ " " +
                            ((a + b) / 2));
}
 
    // Driver Code
    public static void main (String[] args)
    {
        int a = 12, b = 8;
        findValues(a, b);
    }
}
 
// This code is contributed by ajit...

Python3

# Python3 program to find the values of
# X and Y using the given equations
 
# Function to find the values of X and Y
def findValues(a, b):
 
    # base condition
    if ((a - b) % 2 == 1):
        print("-1");
        return;
 
    # required answer
    print((a - b) // 2, (a + b) // 2);
 
# Driver Code
a = 12; b = 8;
 
findValues(a, b);
 
# This code is contributed
# by Akanksha Rai

C#

// C# program to find the values of
// X and Y using the given equations
using System;
 
class GFG
{
         
// Function to find the
// values of X and Y
static void findValues(int a, int b)
{
    // base condition
    if ((a - b) % 2 == 1)
    {
            Console.Write ("-1");
        return;
    }
 
    // required answer
    Console.WriteLine(((a - b) / 2)+ " " +
                        ((a + b) / 2));
}
 
// Driver Code
static public void Main ()
{
    int a = 12, b = 8;
    findValues(a, b);
}
}
 
// This code is contributed by @Tushil..

PHP

<?php
// PHP program to find the values of
// X and Y using the given equations
 
// Function to find the values
// of X and Y
function findValues($a, $b)
{
    // base condition
    if (($a - $b) % 2 == 1)
    {
        echo "-1";
        return;
    }
 
    // required answer
    echo ($a - $b) / 2, " " ,
         ($a + $b) / 2;
}
 
// Driver Code
$a = 12;
$b = 8;
findValues($a, $b);
 
// This code is contributed by jit_t
?>

Javascript

<script>
 
// Javascript program to find the values of
// X and Y using the given equations
 
// Function to find the values
// of X and Y
function findValues(a, b)
{
    // base condition
    if ((a - b) % 2 == 1)
    {
        document.write( "-1");
        return;
    }
 
    // required answer
    document.write( (a - b) / 2+ " " +
        (a + b) / 2);
}
 
// Driver Code
let a = 12;
let b = 8;
findValues(a, b);
 
// This code is contributed
// by bobby
 
</script>
Producción: 

2 10

 

Complejidad de tiempo : O(1), ya que solo hay aritmética básica que toma tiempo constante.
Espacio Auxiliar : O(1), ya que no se ha tomado ningún espacio extra.

Publicación traducida automáticamente

Artículo escrito por pawan_asipu 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 *