用 Python 编写程序,查找使整数为零的最少一位操作
pythonserver side programmingprogramming更新于 2025/12/7 21:00:17
假设我们有一个数字 n,我们必须使用以下操作将其转换为 0,次数为 −
选择 n 的二进制表示中最右边的位。
当第 (i-1) 位设置为 1 且第 (i-2) 到第 0 位设置为 0 时,更改 n 的二进制表示中的第 i 位。
因此,最后我们必须找到将 n 转换为 0 所需的最少操作次数。
因此,如果输入为 n = 6,则输出将为 4,因为最初 6 = "110",然后通过第二次操作将其转换为 "010",然后转换为 "011"使用第一个运算,然后使用第二个运算转换为"001",最后转换为"000"使用第一个操作。
为了解决这个问题,我们将遵循以下步骤 −
n := 数字 n 的二进制位列表
m:= 一个新列表
last:= 0
对于 n 中的每个 d,执行
如果 last 与 1 相同,则
d:= 1-d
last:= d
在 m 的末尾插入 d
m:= 通过连接 m 的元素生成二进制数
以十进制返回 m
示例
让我们看看下面的实现以便更好地理解
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 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

