 GFG App
Open App Browser
Continue

# Pair of integers having difference of their fifth power as X

Given an integer X, the task is to find a pair A and B such that their difference of fifth power is X, i.e., A5 – B5 = X. If there is no such pair print “Not Possible”.

Input: X = 33
Output: 1 -2
Explanation: Input: N = 211
Output: -2 -3
Explanation: Naive Approach: A simple solution is to use two for loops, one for A and one for B, ranging from -109 to 109
Efficient Approach: The idea is to narrow down the range of A and B using mathematical techniques.

Since A5 – B5 = X => A5 = X + B5. For A to be as high as possible, B also has to be as high as possible, as it is evident from the inequality.

Consider A = N and B = N – 1
=> N5 – (N – 1)5 = X.

By binomial expansion, we know

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

So we can say that the maximum value of LHS is 4N4.

Hence 4N5 <= X
=> N <= (X/5)1/5
=> This gives us N ~ 120.

Since A and B can also be negative, we simply extrapolate the range and the final range we get is [-120, 120].

Below is the implementation of the above approach:

## 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 ` `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

 ``

Output:

`1 -2`

Time Complexity: O(240*240)

My Personal Notes arrow_drop_up