Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

x^(y^2) 또는 y^(x^2) 중에서 최대값을 구합니다. 여기서 x와 y는 C++에서 제공됩니다.

<시간/>

이 문제에서는 두 개의 값 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)

우리 솔루션의 작동을 설명하는 프로그램,

예시

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