用 Python 寫壞掉的計算器


假設我們有一個顯示屏上顯示數字的壞計算器,我們可以執行以下兩種操作——

  • 加倍——這將把顯示屏上的數字乘以 2,或;

  • 遞減——這會將顯示屏上的數字減小 1,

最初,計算器顯示數字 X。我們必須找到顯示數字 Y 所需的最少運算元。

所以如果輸入是 X = 5 而 Y 是 8,那麼輸出將是 2,因為先遞減一次,然後將其加倍

為了解決這個問題,我們將按以下步驟進行——

  • res := 0

  • 當 Y > X 時

    • res := res + Y mod 2 + 1

    • 當 Y 為偶數時 Y := Y / 2,否則 (Y + 1) / 2

  • 返回 res + X - Y

示例(Python)

讓我們看看下面的實現來加深理解——

 線上演示

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

更新時間: 2020-04-30

273 瀏覽量

開啟你的職業生涯

完成教程認證

開始
廣告