Par de enteros que tienen diferencia de su quinta potencia como X

Dado un entero X , la tarea es encontrar un par A y B tal que su diferencia de quinta potencia sea X, es decir, A 5 – B 5 = X . Si no existe tal par, escriba «No es posible».
 

Entrada: X = 33 
Salida: 1 -2 
Explicación:  
1^{5} - (-2)^{5} = 1 - (-32) = 33 == N
Entrada: N = 211 
Salida: -2 -3 
Explicación: 
(-2)^{5} - (-3)^{5} = -32 - (-243) = 211 == N
 

Enfoque ingenuo: una solución simple es usar dos bucles for, uno para A y otro para B, que van desde -10 9 a 10 9
Enfoque eficiente: la idea es reducir el rango de A y B utilizando técnicas matemáticas. 
 

Dado que A 5 – B 5 = X => A 5 ​​= X + B 5 . Para que A sea lo más alto posible, B también tiene que ser lo más alto posible, como se desprende de la desigualdad. 
 

Considere A = N y B = N – 1 
=> N 5 – (N – 1) 5 = X. 
 

 Por expansión binomial sabemos

(p + 1)y p <= (y + 1) p+1 – y p+1 <= (p+1)(y+1) p 
 

Entonces podemos decir que el valor máximo de LHS es 4N 4 .

Por lo tanto 4N 5 <= X 
=> N <= (X/5) 1/5
=> Esto nos da N ~ 120. 
 

Como A y B también pueden ser negativos, simplemente extrapolamos el rango y el rango final que obtenemos es [-120, 120].

A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ implementation to find a pair
// of integers A & B such that
// difference of fifth power is
// equal to the given number X
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find a pair
// of integers A & B such that
// difference of fifth power is
// equal to the given number X
void findPair(int x)
{
    int lim = 120;
 
    // Loop to choose every possible
    // pair with in the range
    for (int i = -lim; i <= lim; i++) {
        for (int j = -lim; j <= lim; j++) {
 
            // Check if equation holds
            if (pow(i, 5) - pow(j, 5) == x) {
                cout << i << ' ' << j << endl;
                return;
            }
        }
    }
    cout << "-1";
}
 
// Driver Code
signed main()
{
    int X = 33;
 
    // Function Call
    findPair(X);
    return 0;
}

Java

// Java implementation to find a
// pair of integers A & B such
// that difference of fifth power
// is equal to the given number X
class GFG{
 
// Function to find a pair
// of integers A & B such that
// difference of fifth power is
// equal to the given number X
static void findPair(int x)
{
    int lim = 120;
 
    // Loop to choose every possible
    // pair with in the range
    for(int i = -lim; i <= lim; i++)
    {
       for(int j = -lim; j <= lim; j++)
       {
            
          // Check if equation holds
          if (Math.pow(i, 5) -
              Math.pow(j, 5) == x)
          {
              System.out.print(i + " " +
                               j + "\n");
              return;
          }
       }
    }
    System.out.print("-1");
}
 
// Driver Code
public static void main(String[] args)
{
    int X = 33;
 
    // Function Call
    findPair(X);
}
}
 
// This code is contributed by PrinciRaj1992

Python3

# Python3 implementation to find 
# a pair of integers A & B such 
# that difference of fifth power
# is equal to the given number X
import math
 
# Function to find a pair
# of integers A & B such that
# difference of fifth power is
# equal to the given number X
def findPair(x):
 
    lim = 120
 
    # Loop to choose every possible
    # pair with in the range
    for i in range(-lim, lim + 1):
        for j in range(-lim, lim + 1):
             
            # Check if equation holds
            if (math.pow(i, 5) -
                math.pow(j, 5) == x):
                print (i, end = ' ')
                print (j, end = '\n')
                return
     
    print ("-1")
 
# Driver Code
X = 33
 
# Function Call
findPair(X)
 
# This code is contributed by PratikBasu

C#

// C# implementation to find a
// pair of integers A & B such
// that difference of fifth power
// is equal to the given number X
using System;
 
class GFG{
 
// Function to find a pair of
// integers A & B such that
// difference of fifth power is
// equal to the given number X
static void findPair(int x)
{
    int lim = 120;
 
    // Loop to choose every possible
    // pair with in the range
    for(int i = -lim; i <= lim; i++)
    {
       for(int j = -lim; j <= lim; j++)
       {
           
          // Check if equation holds
          if (Math.Pow(i, 5) -
              Math.Pow(j, 5) == x)
          {
              Console.Write(i + " " +
                            j + "\n");
              return;
          }
       }
    }
    Console.Write("-1");
}
 
// Driver code
public static void Main(String[] args)
{
    int X = 33;
 
    // Function call
    findPair(X);
}
}
 
// This code is contributed by 29AjayKumar

Javascript

<script>
 
// JavaScript implementation to find a
// pair of integers A & B such
// that difference of fifth power
// is equal to the given number X
 
 
// Function to find a pair
// of integers A & B such that
// difference of fifth power is
// equal to the given number X
function findPair(x)
{
    let lim = 120;
 
    // Loop to choose every possible
    // pair with in the range
    for(let i = -lim; i <= lim; i++)
     
    for(let j = -lim; j <= lim; j++)
     
             
        // Check if equation holds
        if (Math.pow(i, 5) -Math.pow(j, 5) == x)
        {
            document.write(i + " "+ j);
            return;
        }
     
    document.write("-1");
}
 
// Driver Code
 
    let X = 33;
 
    // Function Call
    findPair(X);
 
// This code is contributed by mohan
 
</script>
Producción: 

1 -2

 

Complejidad de tiempo: O (240 * 240)
 

Publicación traducida automáticamente

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