Open In App

Pair of integers having difference of their fifth power as X

Last Updated : 07 Apr, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

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: 
1^{5} - (-2)^{5} = 1 - (-32) = 33 == N
Input: N = 211 
Output: -2 -3 
Explanation: 
(-2)^{5} - (-3)^{5} = -32 - (-243) = 211 == N
 


 


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

                    

Output: 
1 -2

 

Time Complexity: O(240*240)
 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads