用 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 浏览量

开启你的职业生涯

完成教程认证

开始
广告