Related Articles
Pair of integers having difference of their fifth power as X
• Difficulty Level : Expert
• Last Updated : 07 Apr, 2021

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)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up