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

หาค่าสูงสุดระหว่าง x^(y^2) และ y^(x^2) ใน C++

โจทย์

ได้รับค่า x และ y ทางเราต้อง หาค่าที่มากกว่าระหว่าง x^(y^2) และ y^(x^2)

ตัวอย่าง

Input: x = 4, y = 3

Output: 3^(4^2)

อธิบาย:

  • x^(y^2) = 4^(3^2) = 4^9 = 262,144
  • y^(x^2) = 3^(4^2) = 3^16 = 43,046,721

แนวทางแก้ปัญหา

การคำนวณค่าจริงอาจล้นได้เมื่อตัวเลขใหญ่ ใช้ ลอการิทึมธรรมชาติ (ln) เพื่อเปรียบเทียบ:

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

หารทั้งสองข้างด้วย (x^2)*(y^2) จะได้:

  • ln(x) / x^2
  • ln(y) / y^2

ฟังก์ชัน ln(z)/z^2 เป็นฟังก์ชันลดลงเมื่อ z เพิ่มขึ้น ดังนั้นถ้า x > y แล้ว x^(y^2) < y^(x^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, 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)