इस समस्या में, हमें तीन पूर्णांक मान A, B और T दिए गए हैं। हमारा कार्य दो पूर्णांकों के साथ सम-विषम टर्न गेम खेलने के लिए एक प्रोग्राम बनाना है।
दो पूर्णांक मान हैं:
T, जो गेम में टर्न की संख्या को दर्शाता है।
A खिलाड़ी1 के लिए मान को दर्शाता है
B खिलाड़ी2 के लिए मान को दर्शाता है
यदि T का मान विषम है, तो A के मान को 2 से गुणा किया जाता है।
यदि T का मान सम है, तो B के मान को 2 से गुणा किया जाता है।
हमें अंत में max(A, B) / min(A, B) का मान ढूंढकर वापस करना है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: A = 3, B = 4, T = 3
आउटपुट: 1
व्याख्या:
पहला टर्न: T विषम है, A को 2 से गुणा किया जाता है, A = 6।
दूसरा टर्न: T सम है, B को 2 से गुणा किया जाता है, B = 8।
तीसरा टर्न: T विषम है, A को 2 से गुणा किया जाता है, A = 12।
A = 12 B = 4
max(A, B) = max(12, 4) = 12
min(A, B) = min(12, 4) = 4
max(A, B) / min(A, B) = 12/ 8 = 1
समाधान दृष्टिकोण:
समस्या का एक सरल समाधान T टर्न के बाद A और B के मान की गणना करना और फिर max(A, B) / min(A, B) का मान वापस करना होगा। यह T पुनरावृत्तियों को लेकर एक प्रभावी समाधान है।
लेकिन एक अधिक प्रभावी समाधान इस तथ्य पर आधारित हो सकता है कि T के सम मान के लिए, नए A का मान N*A है और नए B का मान N*B है।
यह max(A, B) / min(A, B) का मान एक स्थिर बनाता है जो बराबर है
max(A, B) / min(A, B)।
यदि T का मान विषम है, तो A का मान 2*N*A होगा और B का मान N*B होगा।
यह max(A, B) / min(A, B) का मान एक स्थिर बनाता है जो बराबर है max(2A, B) / min(2A, B)।
समस्या का परिणाम max(A, B) / min(A, B) =
max(A, B) / min(A, B), यदि T सम है
max(A, B) / min(A, B), यदि T विषम है
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला प्रोग्राम,
उदाहरण
#include <iostream>
using namespace std;
int EvenOddGame(int A, int B, int T) {
if ( T%2 == 0)
return (max(A, B) / min(A, B));
else
return (max(2*A, B) / min(2*A, B));
return -1;
}
int main() {
int A = 3, B = 2, T = 3;
cout<<"The return value of even odd game is "<<EvenOddGame(A, B, T);
}
आउटपुट
The return value of even odd game is 3