Find larger of x^y and y^x
Last Updated :
19 Dec, 2022
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++
#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
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);
}
}
public static void main (String[] args)
{
int x = 5 , y = 8 ;
printGreater(x, y);
}
}
|
Python3
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);
x = 5 ;
y = 8 ;
printGreater(x, y);
|
C#
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);
}
}
public static void Main ()
{
int x = 5, y = 8;
printGreater(x, y);
}
}
|
PHP
<?php
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 ;
}
}
$x = 5;
$y = 8;
printGreater( $x , $y );
?>
|
Javascript
<script>
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);
}
}
let x = 5, y = 8;
printGreater(x, y);
</script>
|
Time complexity: O(1) because constant operations are being performed
Auxiliary space: O(1)
Share your thoughts in the comments
Please Login to comment...