ในปัญหานี้ เราได้รับค่า x และ y สองค่า งานของเราคือ หาค่าสูงสุดระหว่าง x^(y^2) หรือ y^(x^2) โดยที่ x และ y จะได้รับ
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล: 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
แนวทางการแก้ปัญหา
วิธีหนึ่งสามารถคำนวณทั้งสองค่าแล้วพิมพ์ค่าสูงสุดของทั้งสอง แต่วิธีนี้ใช้ไม่ได้ผลเมื่อมีค่ามาก
วิธีการที่ง่ายและสะดวกคือการใช้ Natural Log (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)