मान लीजिए कि हमारे पास एक टूटा हुआ कैलकुलेटर है जिसके डिस्प्ले पर एक नंबर दिख रहा है, हम केवल दो ऑपरेशन कर सकते हैं -
-
डबल - यह डिस्प्ले पर संख्या को 2 से गुणा करेगा, या;
-
कमी - इससे दिखाई देने वाली संख्या में 1 की कमी आएगी,
प्रारंभ में, कैलकुलेटर संख्या X प्रदर्शित कर रहा है। हमें संख्या Y प्रदर्शित करने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या ज्ञात करनी होगी।
तो अगर इनपुट एक्स =5 जैसा है और वाई 8 है, तो आउटपुट 2 होगा, डिक्रीमेंट के रूप में, इसे एक बार, फिर इसे दोगुना करें
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
रेस :=0
-
जबकि वाई> एक्स
-
रेस:=रेस + वाई मॉड 2 + 1
-
Y :=Y / 2 जब Y सम हो, अन्यथा (Y + 1) / 2
-
-
रिटर्न रेस + एक्स - वाई
उदाहरण (पायथन)
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
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