Dado un número entero N , la tarea es encontrar un par distinto de X e Y tal que X + Y = N y abs(X – Y) sea mínimo.
Ejemplos:
Entrada: N = 11
Salida: 5 6
Explicación:
X = 5 e Y = 6 satisfacen la ecuación dada.
Por lo tanto, el valor absoluto mínimo de abs(X – Y) = 1.Entrada: N = 12
Salida: 5 7
Enfoque ingenuo: el enfoque más simple para resolver este problema es generar todos los valores posibles de X e Y con una suma igual a N e imprimir el valor de X e Y que da el valor absoluto mínimo de abs(X – Y) .
Complejidad de Tiempo: O(N 2 )
Espacio Auxiliar: O(1)
Enfoque eficiente: el enfoque anterior se puede optimizar en función de las siguientes observaciones:
Si N % 2 == 1 , entonces los pares (N / 2) y (N / 2 + 1) tienen una diferencia absoluta mínima.
En caso contrario, los pares (N/2 – 1) y (N/2 + 1) tendrán la mínima diferencia absoluta.
Siga los pasos a continuación para resolver el problema:
- Compruebe si N es impar o no . Si se determina que es cierto, imprima el valor mínimo de (N / 2) y (N / 2 + 1) como la respuesta requerida.
- De lo contrario, imprime el valor de (N/2 – 1) y (N/2 + 1) .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to implement // the above approach #include <bits/stdc++.h> using namespace std; // Function to find the value of X and Y // having minimum value of abs(X - Y) void findXandYwithminABSX_Y(int N) { // If N is an odd number if (N % 2 == 1) { cout << (N / 2) << " " << (N / 2 + 1); } // If N is an even number else { cout << (N / 2 - 1) << " " << (N / 2 + 1); } } // Driver Code int main() { int N = 12; findXandYwithminABSX_Y(N); }
Java
// Java program to implement // the above approach import java.util.*; class GFG { // Function to find the value // of X and Y having minimum // value of Math.abs(X - Y) static void findXandYwithminABSX_Y(int N) { // If N is an odd number if (N % 2 == 1) { System.out.print((N / 2) + " " + (N / 2 + 1)); } // If N is an even number else { System.out.print((N / 2 - 1) + " " + (N / 2 + 1)); } } // Driver Code public static void main(String[] args) { int N = 12; findXandYwithminABSX_Y(N); } } // This code is contributed by gauravrajput1
Python3
# Python3 program to implement # the above approach # Function to find the value of X and Y # having minimum value of abs(X - Y) def findXandYwithminABSX_Y(N): # If N is an odd number if (N % 2 == 1): print((N // 2), (N // 2 + 1)) # If N is an even number else: print((N // 2 - 1), (N // 2 + 1)) # Driver Code if __name__ == '__main__': N = 12 findXandYwithminABSX_Y(N) # This code is contributed by mohit kumar 29
C#
// C# program to implement // the above approach using System; class GFG { // Function to find the value // of X and Y having minimum // value of Math.abs(X - Y) static void findXandYwithminABSX_Y(int N) { // If N is an odd number if (N % 2 == 1) { Console.Write((N / 2) + " " + (N / 2 + 1)); } // If N is an even number else { Console.Write((N / 2 - 1) + " " + (N / 2 + 1)); } } // Driver Code public static void Main() { int N = 12; findXandYwithminABSX_Y(N); } } // This code is contributed by bgangwar59
PHP
<?php function findXandYwithminABSX_Y($N){ // If N is an odd number if ($N % 2 == 1) { return ($N / 2) . " " . ($N / 2 + 1); } // If N is an even number else { return ($N /2 -1) . " " . ($N / 2 + 1); } } // Driver code $N = 12; echo(findXandYwithminABSX_Y($N)); ?>
Javascript
<script> // JavaScript program to implement the above approach // Function to find the value of X and Y // having minimum value of abs(X - Y) function findXandYwithminABSX_Y(N) { // If N is an odd number if (N % 2 == 1) { document.write((N / 2) + " " + (N / 2 + 1)); } // If N is an even number else { document.write((N / 2 - 1) + " " + (N / 2 + 1)); } } // Driver Code let N = 12; findXandYwithminABSX_Y(N); // This code is contributed by susmitakundugoaldanga. </script>
5 7
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por grand_master y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA