Encuentra dos números cuya diferencia de cuarta potencia sea igual a N

Dado un entero N , la tarea es encontrar dos enteros no negativos X e Y tales que X 4 – Y 4 = N . Si no existe tal par, imprima -1.
Ejemplos: 
 

Entrada: N = 15 
Salida: X = 2, Y = 1 
Explicación: 
X 4 – Y 4 = (2) 4 – (1) 4 = (16) – (1) = 15

Entrada: N = 10 
Salida: -1 
Explicación: 
No existen valores de X e Y que satisfagan la condición. 
 

Enfoque: 
Para resolver el problema mencionado anteriormente, debemos observar que necesitamos encontrar los valores mínimo y máximo de xey que es posible satisfacer la ecuación. 
 

  • El valor mínimo para los dos enteros puede ser 0 ya que X e Y no son negativos .
  • El valor máximo de X e Y puede ser ceil(N (1/4) ) .
  • Por lo tanto, itere sobre el rango [0, ceil(N (1/4) )] y encuentre cualquier par adecuado de X e Y que satisfaga la condición.

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

C++

// C++ implementation to find the
// values of x and y for the given
// equation with integer N
 
#include <bits/stdc++.h>
using namespace std;
 
// Function which find required x & y
void solve(int n)
{
    // Upper limit of x & y,
    // if such x & y exists
    int upper_limit = ceil(pow(
        n, 1.0 / 4));
 
    for (int x = 0; x <= upper_limit; x++) {
 
        for (int y = 0; y <= upper_limit; y++) {
 
            // num1 stores x^4
            int num1 = x * x * x * x;
 
            // num2 stores y^4
            int num2 = y * y * y * y;
 
            // If condition is satisfied
            // the print and return
            if (num1 - num2 == n) {
                cout << "x = " << x
                     << ", y = " << y;
                return;
            }
        }
    }
 
    // If no such pair exists
    cout << -1 << endl;
}
 
// Driver code
int main()
{
    int n = 15;
 
    solve(n);
 
    return 0;
}

Java

// Java implementation to find the
// values of x and y for the given
// equation with integer N
import java.util.*;
 
class GFG{
 
// Function which find required x & y
static void solve(int n)
{
     
    // Upper limit of x & y,
    // if such x & y exists
    int upper_limit = (int) (Math.ceil
                            (Math.pow(n, 1.0 / 4)));
 
    for(int x = 0; x <= upper_limit; x++)
    {
       for(int y = 0; y <= upper_limit; y++)
       {
           
          // num1 stores x^4
          int num1 = x * x * x * x;
           
          // num2 stores y^4
          int num2 = y * y * y * y;
           
          // If condition is satisfied
          // the print and return
          if (num1 - num2 == n)
          {
              System.out.print("x = " + x +
                             ", y = " + y);
              return;
          }
       }
    }
     
    // If no such pair exists
    System.out.print(-1);
}
 
// Driver code
public static void main(String[] args)
{
    int n = 15;
 
    solve(n);
}
}
 
// This code is contributed by shivanisinghss2110

Python3

# Python3 implementation to find the
# values of x and y for the given
# equation with integer N
from math import pow, ceil
 
# Function which find required x & y
def solve(n) :
 
    # Upper limit of x & y,
    # if such x & y exists
    upper_limit = ceil(pow(n, 1.0 / 4));
 
    for x in range(upper_limit + 1) :
 
        for y in range(upper_limit + 1) :
 
            # num1 stores x^4
            num1 = x * x * x * x;
 
            # num2 stores y^4
            num2 = y * y * y * y;
 
            # If condition is satisfied
            # the print and return
            if (num1 - num2 == n) :
                print("x =", x, ", y =" , y);
                return;
 
    # If no such pair exists
    print(-1) ;
 
# Driver code
if __name__ == "__main__" :
 
    n = 15;
 
    solve(n);
     
# This code is contributed by AnkitRai01

C#

// C# implementation to find the
// values of x and y for the given
// equation with integer N
using System;
 
class GFG{
 
// Function which find required x & y
static void solve(int n)
{
     
    // Upper limit of x & y,
    // if such x & y exists
    int upper_limit = (int) (Math.Ceiling
                            (Math.Pow(n, 1.0 / 4)));
 
    for(int x = 0; x <= upper_limit; x++)
    {
       for(int y = 0; y <= upper_limit; y++)
       {
           
          // num1 stores x^4
          int num1 = x * x * x * x;
           
          // num2 stores y^4
          int num2 = y * y * y * y;
           
          // If condition is satisfied
          // the print and return
          if (num1 - num2 == n)
          {
              Console.Write("x = " + x +
                          ", y = " + y);
              return;
          }
       }
    }
     
    // If no such pair exists
    Console.Write(-1);
}
 
// Driver code
public static void Main(String[] args)
{
    int n = 15;
 
    solve(n);
}
}
 
// This code is contributed by shivanisinghss2110

Javascript

<script>
 
    // Javascript implementation to find the
    // values of x and y for the given
    // equation with integer N
     
    // Function which find required x & y
    function solve(n)
    {
        // Upper limit of x & y,
        // if such x & y exists
        let upper_limit = Math.ceil(Math.pow(n, 1.0 / 4));
 
        for (let x = 0; x <= upper_limit; x++) {
 
            for (let y = 0; y <= upper_limit; y++) {
 
                // num1 stores x^4
                let num1 = x * x * x * x;
 
                // num2 stores y^4
                let num2 = y * y * y * y;
 
                // If condition is satisfied
                // the print and return
                if (num1 - num2 == n) {
                    document.write("x = " + x + ", y = " + y);
                    return;
                }
            }
        }
 
        // If no such pair exists
        document.write(-1);
    }
     
    let n = 15;
   
    solve(n);
 
 
</script>
Producción: 

x = 2, y = 1

 

Complejidad del tiempo: O(sqrt(N))
 

Publicación traducida automáticamente

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