इस समस्या में, हमें दो मान 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
समाधान दृष्टिकोण
एक दृष्टिकोण दोनों मानों की गणना करना और फिर दोनों में से अधिकतम प्रिंट करना हो सकता है। लेकिन यह विधि तब काम नहीं करती जब मान बड़े हों।
एक सरल और आसान दृष्टिकोण प्राकृतिक लॉग (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) < 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;
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)