Related Articles
Find larger of x^y and y^x
• Last Updated : 18 Dec, 2018

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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

A simple solution is calculate x^y by looping for y times, but if the values of x and y is too large it will cause overflow.

To solve the overflow problem, we can simplify the equation by taking log.
log(x^y) = y* log(x)
Now, this equation will not cause overflow and we can compare two values directly.

## C++

 `// C++ program to print greater of x^y and``// y^x``#include ``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

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

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

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

 ` ``\$Y``) ``    ``{``        ``echo` `\$x` `. ``"^"` `. ``\$y``;``    ``}``    ``else` `    ``{``        ``echo` `\$y` `. ``"^"` `. ``\$x``;``    ``}``}`` ` `// Driver Code``\$x` `= 5;``\$y` `= 8;``printGreater(``\$x``, ``\$y``);`` ` `// This code is contributed by mits``?>`
Output:
```5^8
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up