C++程序 比较 m^n 和 n^m
给定两个正整数 m 和 n ,编写一个程序来检查 m^n 是否大于、小于或等于 n^m。
示例:
输入:m = 3,n = 10
输出:m^n > n^m
解释:3^10=59049,大于 10^3=1000
输入:m = 987654321,n = 123456987
输出:m^n < n^m
一种 愚笨的方法 是计算 m^n 和 n^m,但当 m 和 n 很大时,会导致溢出。
一种 高效的方法 是使用 对数 来解决这个问题。
给定 LHS = m^n 和 RHS = n^m。
同时在两侧取对数,LHS = n*log(m),RHS = m*log(n)
。
然后比较 LHS 和 RHS。
输出:
时间复杂度: O(max(log(m), log(n)))
辅助空间: O(max(log(m), log(n))),因为有递归的调用栈。