用 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
广告