在 C++ 中找出给定 x 和 y 时 x^(y^2) 或 y^(x^2) 中的最大值


在这个问题中,我们给定两个值 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<<"The greater value is ";
   if(checkGreaterVal(x, y))
      cout<<x<<"^("<<y<<"^2)";
   else
      cout<<y<<"^("<<x<<"^2)";
   return 0;
}

输出

The greater value is 3^(5^2)

更新于:2021年1月25日

74 次查看

启动你的职业生涯

完成课程获得认证

开始学习
广告