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