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) = 15Entrada: 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>
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