Given two integer numbers, X and Y. find the larger of X^Y and Y^X or determine if they are equal.
Examples:
Input : 2 3
Output : 3^2
We know 3^2 = 9 and 2^3 = 8.Input : 2 4
Output : Equal
A simple solution is to calculate x^y by looping for y times, but if the values of x and y is too large it will cause an overflow.
To solve the overflow problem, we can simplify the equation by taking the log.
log(x^y) = y* log(x)
Now, this equation will not cause overflow, and we can compare the two values directly.
// C++ program to print greater of x^y and // y^x #include <bits/stdc++.h> using namespace std;
void printGreater( double x, double y)
{ long double X = y * log (x);
long double Y = x * log (y);
if ( abs (X - Y) < 1e-9) {
cout << "Equal" ;
}
else if (X > Y) {
cout << x << "^" << y;
}
else {
cout << y << "^" << x;
}
} int main()
{ double x = 5, y = 8;
printGreater(x, y);
return 0;
} |
// Java program to print // greater of x^y and y^x import java.io.*;
class GFG
{ static void printGreater( int x,
int y)
{ double X = y * Math.log(x);
double Y = x * Math.log(y);
if (Math.abs(X - Y) < 1e- 9 )
{
System.out.println( "Equal" );
}
else if (X > Y)
{
System.out.println(x + "^" + y);
}
else
{
System.out.println(y + "^" + x);
}
} // Driver Code public static void main (String[] args)
{ int x = 5 , y = 8 ;
printGreater(x, y);
} } // This code is contributed // by anuj_67. |
# Python3 program to print greater # of x^y and y^x import math
def printGreater(x, y):
X = y * math.log(x);
Y = x * math.log(y);
if ( abs (X - Y) < 1e - 9 ):
print ( "Equal" );
elif (X > Y):
print (x, "^" , y);
else :
print (y, "^" , x);
# Driver Code x = 5 ;
y = 8 ;
printGreater(x, y); # This code is contributed by mits |
// C# program to print // greater of x^y and y^x using System;
class GFG
{ static void printGreater( int x,
int y)
{ double X = y * Math.Log(x);
double Y = x * Math.Log(y);
if (Math.Abs(X - Y) < 1e-9)
{
Console.WriteLine( "Equal" );
}
else if (X > Y)
{
Console.WriteLine(x +
"^" + y);
}
else
{
Console.WriteLine(y +
"^" + x);
}
} // Driver Code public static void Main ()
{ int x = 5, y = 8;
printGreater(x, y);
} } // This code is contributed // by anuj_67. |
<?php // PHP program to print greater // of x^y and y^x function printGreater( $x , $y )
{ $X = $y * log( $x );
$Y = $x * log( $y );
if ( abs ( $X - $Y ) < 1e-9)
{
echo "Equal" ;
}
else if ( $X > $Y )
{
echo $x . "^" . $y ;
}
else
{
echo $y . "^" . $x ;
}
} // Driver Code $x = 5;
$y = 8;
printGreater( $x , $y );
// This code is contributed by mits ?> |
<script> // Javascript program to print greater of x^y and // y^x function printGreater(x, y)
{ let X = y * Math.log(x);
let Y = x * Math.log(y);
if (Math.abs(X - Y) < 1e-9) {
document.write( "Equal" );
}
else if (X > Y) {
document.write(x + "^" + y);
}
else {
document.write(y + "^" + x);
}
} // Driver Code let x = 5, y = 8; printGreater(x, y); </script> |
5^8
Time complexity: O(1) because constant operations are being performed
Auxiliary space: O(1)