在 Python 中查找最小一位操作以使整数为零的程序

假设我们有一个数字 n,我们必须使用以下操作多次将其转换为 0 -

  • 选择 n 的二进制表示中最右边的位。

  • 当第 (i-1) 位设置为 1 且第 (i-2) 至第 0 位设置为 0 时,更改 n 的二进制表示中的第 i 位。

所以最后我们必须找到将 n 转换为 0 所需的最少操作次数。

所以,如果输入像n = 6,那么输出将是4,因为最初6 =“110”,然后通过第二次操作将其转换为“010”,然后使用第一次操作转换为“011”,然后转换为“ 001" 使用第二个操作,最后使用第一个操作转换为 "000"。

示例

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

def solve(n):

   n=list(map(int,bin(n)[2:]))

   m=[]

   last=0

   for d in n:

      if last==1:

         d=1-d

      last=d

      m.append(d)

   m=''.join(map(str,m))

   return int(m,2)

n = 6

print(solve(n))

输入

"95643", "45963"
输出结果
4

以上是 在 Python 中查找最小一位操作以使整数为零的程序 的全部内容, 来源链接: utcz.com/z/331686.html

回到顶部