程序,查找在Python中将一个数字转换为另一个数字所需的最少操作数

假设我们有一个数字开头和另一个数字结尾(开始<结束),我们必须找到使用这些操作将开始转换为结束所需的最小操作数-

  • 递增1

  • 乘以2

因此,如果输入就像开始= 5,结束= 11,那么输出将是2,因为我们可以将2乘以得到10,然后再加1以得到11。

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

  • ct:= 0

  • 当end / 2> =开始时,执行

    • 结束:=结束/ 2

    • ct:= ct + 1

    • 结束:=结束-1

    • 结束:=结束/ 2

    • ct:= ct + 2

    • 如果end mod 2与1相同,则

    • 除此以外,

    • ct:= ct +(结束开始)

    • 返回ct

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def solve(self, start, end):
          ct=0
          while(end/2>=start):
             if end%2==1:
                end-=1
                end=end/2
                ct+=2
             else:
                end=end/2
                ct+=1
          ct+=(end-start)
          return ct
    ob = Solution()print(ob.solve(5,11))

    输入值

    5,11

    输出结果

    2
    猜你喜欢