Python中损坏的计算器

假设我们有一个坏掉的计算器,显示屏上显示了一个数字,我们只能执行两个操作-

  • 双倍-将显示屏上的数字乘以2,或;

  • 递减-这会将显示的数字减少1,

最初,计算器显示的是数字X。我们必须找到显示数字Y所需的最少操作数。

因此,如果输入像X = 5且Y为8,则输出将为2,减1,然后减一

为了解决这个问题,我们将遵循以下步骤-

  • res:= 0

  • 而Y> X

    • res:= res + Y mod 2 +1

    • Y:= Y / 2,当Y为偶数时,否则(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