मान लीजिए हमारे पास एक संख्या start और एक अन्य संख्या end है (start < end), हमें start को end में बदलने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या ढूंढनी है इन संक्रियाओं का उपयोग करके:
- 1 से बढ़ाएं
- 2 से गुणा करें
उदाहरण के लिए, यदि इनपुट है start = 5, end = 11, तो आउटपुट होगा 2, क्योंकि हम 2 से गुणा करके 10 प्राप्त कर सकते हैं, फिर 1 जोड़कर 11 प्राप्त कर सकते हैं।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
- ct := 0
- जब तक end/2 >= start, करें
- यदि end mod 2, 1 के समान है, तो
- end := end - 1
- end := end/2
- ct := ct + 2
- अन्यथा,
- end := end/2
- ct := ct + 1
- यदि end mod 2, 1 के समान है, तो
- ct := ct + (end-start)
- ct वापस करें
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
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