在这个问题上,我们给了两个值x和y。我们的任务是在给定x和y的x ^(y ^ 2)或y ^(x ^ 2)中找到最大值。
让我们举个例子来了解这个问题,
输入: x = 4,y = 3
输出: 3 ^(4 ^ 2)
解释:
x ^(y ^ 2)= 4 ^(3 ^ 2)= 4 ^ 9 = 262144
y ^(x ^ 2)= 3 ^(4 ^ 2)= 3 ^ 16 = 43046721
一种方法是计算两个值,然后打印两个值的最大值。但是,当值较大时,此方法将不起作用。
一种简单的方法是使用自然对数(ln),这将使解决方案更加容易。
ln(x ^(y ^ 2))=(y ^ 2)* ln(x)
ln(y ^(x ^ 2))=(x ^ 2)* ln(y)
在此,这些值不直接与x和y成正比。因此,让我们将值除以(x ^ 2)*(y ^ 2)。这使得价值,
ln(x ^(y ^ 2))/ (x ^ 2)*(y ^ 2) = ln(x)/(x ^ 2)
ln(y ^(x ^ 2))/ (x ^ 2)*(y ^ 2)= ln(y)/(y ^ 2)
这些值与结果值成反比。
如果x> y,则x ^(y ^ 2)<y ^(x ^ 2)
#include <iostream> using namespace std; bool checkGreaterVal(int x, int y) { if (x > y) return false; else return true; } int main() { int x = 3; int y = 5; cout<<"较大的值是 "; if(checkGreaterVal(x, y)) cout<<x<<"^("<<y<<"^2)"; else cout<<y<<"^("<<x<<"^2)"; return 0; }输出结果
较大的值是 3^(5^2)