C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

x ^(y ^ 2)またはy ^(x ^ 2)の中から最大値を見つけます。ここで、xとyはC++で指定されています。


この問題では、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

ソリューションアプローチ

1つのアプローチは、両方の値を計算してから、両方の最大値を出力することです。ただし、値が大きい場合、この方法は機能しません。

シンプルで簡単なアプローチは、自然対数(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)

ソリューションの動作を説明するプログラム

#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)

  1. C++のバイナリツリーのすべての正しいノードの中から最大値を見つけます

    この問題では、二分木が与えられます。私たちのタスクは、バイナリツリー内のすべての適切なノードの中から最大値を見つけることです。 問題の説明: ここでは、二分木のすべての正しい子ノードの中から最大値を見つける必要があります。 問題を理解するために例を見てみましょう。 入力: 出力: 9 説明: すべての正しいノードは次のとおりです:{2、8、9}。それらの最大数は9です。 ソリューションアプローチ この問題を解決するには、ツリーをトラバースして、適切な子が存在するかどうかを確認する必要があります。存在する場合は、maxRight要素と比較し、大きい場合は置き

  2. C++で指定されたGCDとLCMのペアを検索します

    このセクションでは、指定されたGCD値とLCM値を使用してペアの数を取得する方法を説明します。 GCDとLCMの値が2と12であると仮定します。これで、可能な数値のペアは(2、12)、(4、6)、(6、4)、および(12、2)になります。したがって、私たちのプログラムはペアの数を見つけます。それは4です。 この問題を解決するための手法を理解するためのアルゴリズムを見てみましょう。 アルゴリズム countPairs(gcd, lcm): Begin    if lcm is nit divisible by gcd, then       r