मान लीजिए कि हमारे पास एक नंबर स्टार्ट है और दूसरा नंबर एंड (स्टार्ट <एंड) है, हमें इन ऑपरेशंस का उपयोग करके स्टार्ट टू एंड को कन्वर्ट करने के लिए आवश्यक ऑपरेशंस की न्यूनतम संख्या ज्ञात करनी होगी -
- 1 से वृद्धि
- 2 से गुणा करें
इसलिए, यदि इनपुट प्रारंभ =5, अंत =11 जैसा है, तो आउटपुट 2 होगा, क्योंकि हम 10 प्राप्त करने के लिए 2 गुणा कर सकते हैं, फिर 11 प्राप्त करने के लिए 1 जोड़ सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- सीटी:=0
- अंत में/2>=प्रारंभ करें, करें
- यदि अंतिम मोड 2 1 के समान है, तो
- अंत :=अंत - 1
- अंत:=अंत/2
- सीटी:=सीटी + 2
- अन्यथा,
- अंत:=अंत/2
- सीटी:=सीटी + 1
- यदि अंतिम मोड 2 1 के समान है, तो
- ct :=ct +(end-start)
- वापसी सीटी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, start, end): ct=0 while(end/2>=start): if end%2==1: end-=1 end=end/2 ct+=2 else: end=end/2 ct+=1 ct+=(end-start) return ct ob = Solution() print(ob.solve(5,11))
इनपुट
5,11
आउटपुट
2