इस समस्या में, हमें तीन पूर्णांक मान A , B और T दिए गए हैं। हमारा कार्य दो पूर्णांकों के साथ सम-विषम टर्न गेम खेलने के लिए एक प्रोग्राम बनाना है।
दो पूर्णांक मान हैं:
टी, जो खेल में घुमावों की संख्या को दर्शाता है।
A खिलाड़ी1 के लिए मान को दर्शाता है
B खिलाड़ी2 के मान को दर्शाता है
यदि T का मान विषम है, तो A का मान 2 से गुणा किया जाता है।
यदि T का मान सम है, तो B का मान 2 से गुणा किया जाता है।
हमें अधिकतम (ए, बी) / मिनट (ए, बी) का मान खोजने और वापस करने की आवश्यकता है अंत में।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: ए =3, बी =4, टी =3
आउटपुट: 1पी>
स्पष्टीकरण:
पहला मोड़ :T विषम है, A को 2 से गुणा किया जाता है, A =6।
दूसरा मोड़:T सम है, B को 2 से गुणा किया जाता है, B =8।
तीसरा मोड़:T विषम है, A को 2 से गुणा किया जाता है, A =12.
ए =12 बी =4
अधिकतम (ए, बी) =अधिकतम (12, 4) =12
मिनट(ए, बी) =मिनट(12, 4) =4
अधिकतम (ए, बी) / मिनट (ए, बी) =12/8 =1
समाधान दृष्टिकोण:
समस्या का एक सरल समाधान यह होगा कि T के मुड़ने के बाद A और B के मान की गणना की जाए और फिर अधिकतम (A, B) / मिनट (A, B) का मान लौटाया जाए। टी पुनरावृत्तियों को लेकर यह एक प्रभावी समाधान है।
लेकिन वे इस तथ्य के आधार पर अधिक प्रभावी समाधान हो सकते हैं कि T के सम मान के लिए, नए A का मान N*A है और नए B का मान N*B है।
यह अधिकतम (ए, बी) / मिनट (ए, बी) के मान को एक स्थिरांक बनाता है जो के बराबर है
अधिकतम (ए, बी) / मिनट (ए, बी)।
यदि T का मान विषम है, तो A का मान 2*N*A होगा और B का मान N*B होगा।
यह max(A, B) / min(A, B) के मान को एक स्थिरांक बनाता है जो max(2A, B) / min(2A, B) के बराबर होता है।
समस्या का परिणाम अधिकतम (ए, बी) / मिनट (ए, बी) =
अधिकतम (ए, बी) / मिनट (ए, बी), यदि टी सम है
मैक्स (ए, बी) / मिनट (ए, बी), अगर टी विषम है
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#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