Given two positive integers m and n, the task is to write a program that checks whether m^n is greater than, less than, or equal to n^m.
Examples :
Input: m = 3, n = 10
Output: m^n > n^m
Explanation : 3^10=59049 which is greater than 10^3=1000Input: m = 987654321, n = 123456987
Output: m^n < n^m
A naive approach is to compute m^n and n^m, which causes overflow when m and n are very large.
An efficient approach is to solve this problem using log.
Given LHS = m^n and RHS = n^m.
After taking log on both sides, LHS = n*log(m) and RHS = m*log(n)
Then compare the LHS and RHS.
C++
// CPP program to compare which is greater // m^n or n^m #include <bits/stdc++.h> using namespace std; // function to compare m^n and n^m void check(unsigned long long m, unsigned long long int n) { // m^n double RHS = m * ( double ) log (n); // n^m double LHS = n * ( double ) log (m); if ( LHS > RHS ) cout << "m^n > n^m" ; else if ( LHS < RHS ) cout << "m^n < n^m" ; else cout << "m^n = n^m" ; } // Drivers Code int main() { unsigned long long m = 987654321, n = 123456987; // function call to compare m^n and n^m check(m, n); return 0; } |
Java
// Java program to compare which // is greater m^n or n^m import java .io.*; class GFG { // function to compare // m^n and n^m static void check( long m, long n) { // m^n double RHS = m * ( double )Math.log(n); // n^m double LHS = n * ( double )Math.log(m); if (LHS > RHS) System.out.print( "m^n > n^m" ); else if (LHS < RHS) System.out.print( "m^n < n^m" ); else System.out.print( "m^n = n^m" ); } // Driver Code static public void main (String[] args) { long m = 987654321 , n = 123456987 ; // function call to // compare m^n and n^m check(m, n); } } // This code is contributed by anuj_67. |
Python3
# Python3 program to compare # which is greater m^n or n^m import math # function to compare # m^n and n^m def check( m, n): # m^n RHS = m * math.log(n); # n^m LHS = n * math.log(m); if (LHS > RHS): print ( "m^n > n^m" ); elif (LHS < RHS): print ( "m^n < n^m" ); else : print ( "m^n = n^m" ); # Driver Code m = 987654321 ; n = 123456987 ; # function call to # compare m^n and n^m check(m, n); # This code is contributed by mits |
C#
// C# program to compare which // is greater m^n or n^m using System; class GFG { // function to compare // m^n and n^m static void check( ulong m, ulong n) { // m^n double RHS = m * ( double )Math.Log(n); // n^m double LHS = n * ( double )Math.Log(m); if (LHS > RHS) Console.Write( "m^n > n^m" ); else if (LHS < RHS) Console.Write( "m^n < n^m" ); else Console.Write( "m^n = n^m" ); } // Driver Code static public void Main () { ulong m = 987654321, n = 123456987; // function call to // compare m^n and n^m check(m, n); } } // This code is contributed by anuj_67. |
PHP
<?php // PHP program to compare // which is greater m^n or n^m // function to compare // m^n and n^m function check( $m , $n ) { // m^n $RHS = $m * log( $n ); // n^m $LHS = $n * log( $m ); if ( $LHS > $RHS ) echo "m^n > n^m" ; else if ( $LHS < $RHS ) echo "m^n < n^m" ; else echo "m^n = n^m" ; } // Driver Code $m = 987654321; $n = 123456987; // function call to // compare m^n and n^m check( $m , $n ); // This code is contributed by anuj_67. ?> |
Javascript
<script> // javascript program to compare which // is greater m^n or n^m // function to compare // m^n and n^m function check( m, n) { // m^n var RHS = m * Math.log(n); // n^m var LHS = n * Math.log(m); if (LHS > RHS){ document.write( "m^n > n^m" ); } else if (LHS < RHS) { document.write( "m^n < n^m" ); } else { document.write( "m^n = n^m" ); } } // Driver Code var m = 987654321 ; var n = 123456987; // function call to // compare m^n and n^m check(m, n); </script> |
m^n < n^m
Time Complexity: O(max(log(m), log(n)))
Auxiliary Space: O(max(log(m), log(n))), due to the recursion call stack.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!