मान लीजिए हमारे पास दो संख्याएं c और d हैं। अमल के पास दो संख्याएं a और b हैं जो प्रारंभ में दोनों शून्य हैं। अमल उन पर कुछ ऑपरेशन करना चाहता है। प्रत्येक ऑपरेशन करने से पहले, कुछ धनात्मक पूर्णांक k चुना जाता है, जिसका उपयोग फिर निम्नलिखित ऑपरेशन में से एक को करने के लिए किया जाता है:
संख्या k को a और b दोनों में जोड़ें, या
संख्या k को a में जोड़ें और b से k घटाएं, या
संख्या k को b में जोड़ें और a से k घटाएं।
हमें a और b को क्रमशः c और d के बराबर बनाने के लिए आवश्यक न्यूनतम ऑपरेशन की संख्या ढूंढनी है। यदि संभव नहीं है, तो -1 वापस करें।
उदाहरण के लिए, यदि इनपुट c = 3; d = 5 है, तो आउटपुट 2 होगा, क्योंकि k = 1 के लिए, हमें संख्याएं (1, 1) मिलती हैं, k = 8 के लिए, युग्म (-7, 9) हो सकता है, k = 7 के लिए, यह (0, 2) हो सकता है और k = 3 के लिए, यह (3, 5) हो सकता है।
चरण
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
if (c ^ d) is odd, then: return -1 otherwise when c is same as 0 and d is same as 0, then: return 0 otherwise when c is same as d, then: return 1 Otherwise return 2
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#includeusing namespace std; int solve(int c, int d){ if ((c ^ d) & 1) return -1; else if (c == 0 && d == 0) return 0; else if (c == d) return 1; else return 2; } int main(){ int c = 3; int d = 5; cout << solve(c, d) << endl; }
इनपुट
3, 5
आउटपुट
2