Dados dos números y . Encuentra los valores de X e Y en las ecuaciones.
- A = X + Y
- 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>
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