Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาค่าสูงสุดระหว่าง x^(y^2) หรือ y^(x^2) โดยที่ x และ y ให้ไว้ใน C++


ในปัญหานี้ เราได้รับค่า 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)