मान लीजिए कि हमारे पास दो संख्याएँ c और d हैं। अमल की दो संख्याएँ हैं a और b प्रारंभ में दोनों शून्य हैं। अमल उन पर कुछ संक्रिया करना चाहता है। प्रत्येक ऑपरेशन को करने से पहले, कुछ धनात्मक पूर्णांक k चुना जाता है, जो तब निम्न में से किसी एक ऑपरेशन को करने के लिए उपयोग किया जाता है -
-
संख्या k को a और b दोनों में जोड़ें, या
-
संख्या k को a में जोड़ें और k को b से घटाएं, या
-
संख्या k को b में जोड़ें और k को a से घटाएं।
हमें a और b को c के बराबर और क्रमशः बनाने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या ज्ञात करनी है। यदि संभव न हो, तो -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
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using 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