मान लीजिए हमारे पास एक टूटा हुआ कैलकुलेटर है जिस पर एक नंबर डिस्प्ले हो रहा है, हम केवल दो ऑपरेशन कर सकते हैं -
डबल - यह डिस्प्ले पर नंबर को 2 से गुणा करेगा, या;
डिक्रीमेंट - यह दिख रहे नंबर को 1 से घटा देगा,
प्रारंभ में, कैलकुलेटर नंबर X प्रदर्शित कर रहा है। हमें नंबर Y प्रदर्शित करने के लिए आवश्यक न्यूनतम ऑपरेशन्स की संख्या ढूंढनी है।
इसलिए यदि इनपुट X = 5 और Y = 8 है, तो आउटपुट 2 होगा, क्योंकि इसे एक बार डिक्रीमेंट करें, फिर डबल करें।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
res := 0
जब तक Y > X
res := res + Y mod 2 + 1
Y := Y / 2 जब Y सम हो, अन्यथा (Y + 1) / 2
res + X - Y लौटाएं
उदाहरण (पायथन)
बेहतर समझ पाने के लिए निम्न कार्यान्वयन देखें -
class Solution(object):
def brokenCalc(self, X, Y):
res = 0
while Y > X:
res += Y % 2 + 1
Y = Y // 2 if Y % 2 == 0 else (Y + 1)//2
return res + X - Y
ob = Solution()
print(ob.brokenCalc(5,8))इनपुट
5 8
आउटपुट
2