Encuentre un par con suma N que tenga una diferencia absoluta mínima

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>
Producción: 

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

Deja una respuesta

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