这是hackerearth的练习部分中的问题之一。我们需要确定m ^ n = n ^ m。当n = m时,这是微不足道的,因此我们关注m!= n。
404 page not found
我尝试过的是
1 <= m, n <= 10^10000
但是问题是如何取这么多的日志?有没有其他检查相等性的方法?
答案 0 :(得分:1)
让我们做一些数学运算来确定如何为解决方案编程:
很容易看到 n 和 m 都不能等于1,因为它们必须不同并且不能为null。让我们寻找 1
正如您正确指出的那样, n m = m n 表示 m.log(n)= n.log(m )
因此,我们正在寻找 m / log(m)= n / log(n)和 1
我们可以研究 x> 1 的函数 f(x)= x / log(x):
其导数为 f'(x)=(log(x)-1)/ log(x) 2
导数在 x = e 处具有单个零, f(x)在 x = 1 和之间严格减小x = e ,并从 x = e 一直增加到无穷大。
任何2个不同的数字 n 和 m ,使得 f(n)= f(m),n
n 的唯一可能的整数值为2,并且恰好是一个相应的 m 值为4的解决方案,区间中没有其他整数1到e。
因此,唯一的解决方案是n = 2,m = 4和n = 4,m = 2
这是一个C语言程序,用于输出所有可能的结果:
#include <stdio.h>
int main() {
printf("2 4\n");
printf("4 2\n");
return 0;
}