मान लीजिए कि हमारे पास दो मान प्रारंभ और अंत हैं, हमें इन परिचालनों का उपयोग करके प्रारंभ से अंत तक कनवर्ट करने के लिए आवश्यक संचालन की न्यूनतम संख्या ज्ञात करनी होगी -
-
1 द्वारा घटाएं
-
2 से गुणा करें
इसलिए, यदि इनपुट प्रारंभ =2, अंत =7 जैसा है, तो आउटपुट 3 होगा, क्योंकि हम 4 प्राप्त करने के लिए 2 गुणा कर सकते हैं, फिर 8 प्राप्त करने के लिए 2 गुणा कर सकते हैं और फिर 7 प्राप्त करने के लिए 1 घटा सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
उत्तर :=0
-
निम्नलिखित को असीम रूप से करें, करें
-
यदि अंत <=प्रारंभ करें, तो
-
वापसी उत्तर + प्रारंभ - अंत
-
-
अन्यथा जब अंत विषम हो, तब
-
अंत:=अंत + 1, उत्तर:=उत्तर + 1
-
-
अन्यथा,
-
अंत :=अंत का भागफल / 2
-
उत्तर:=उत्तर + 1
-
-
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, start, end): ans = 0 while True: if end <= start: return ans + start - end elif end % 2: end += 1 ans += 1 else: end //= 2 ans += 1 ob1 = Solution() start = 2 end = 7 print(ob1.solve(start, end))
इनपुट
2, 7
आउटपुट
3