Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm giá trị lớn nhất trong số x ^ (y ^ 2) hoặc y ^ (x ^ 2) trong đó x và y được cho trong C ++

Trong bài toán này, chúng ta được cho hai giá trị x và y. Nhiệm vụ của chúng ta là tìm giá trị lớn nhất trong số x ^ (y ^ 2) hoặc y ^ (x ^ 2) trong đó x và y đã cho.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào: x =4, y =3

Đầu ra: 3 ^ (4 ^ 2)

Giải thích:

x ^ (y ^ 2) =4 ^ (3 ^ 2) =4 ^ 9 =262144
y ^ (x ^ 2) =3 ^ (4 ^ 2) =3 ^ 16 =43046721

Cách tiếp cận giải pháp

Một cách tiếp cận có thể là tính toán cả hai giá trị và sau đó in giá trị tối đa của cả hai. Nhưng phương pháp này không hoạt động khi các giá trị lớn.

Một cách tiếp cận đơn giản và dễ dàng là sử dụng log tự nhiên (ln) sẽ là giải pháp dễ dàng hơn.

ln (x ^ (y ^ 2)) =(y ^ 2) * ln (x)

ln (y ^ (x ^ 2)) =(x ^ 2) * ln (y)

Ở đây, các giá trị không tỷ lệ thuận với x và y. Vì vậy, hãy chia các giá trị cho (x ^ 2) * (y ^ 2). Điều này tạo nên giá trị,

ln (x ^ (y ^ 2)) / (x ^ 2) * (y ^ 2) =ln (x) / (x ^ 2)

ln (y ^ (x ^ 2)) / (x ^ 2) * (y ^ 2) =ln (y) / (y ^ 2)

Các giá trị này tỷ lệ nghịch với giá trị kết quả.

Nếu x> y thì x ^ (y ^ 2)

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

Ví dụ

#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;
}

Đầu ra

The greater value is 3^(5^2)