Python多项式除法改用//整数运算后余数输出错误问题排查
代码问题原因分析
核心错误:// 运算符取整规则不符合要求
Python 中的 // 执行的是向下取整逻辑,而多项式整数除法要求商的系数向零截断取整,二者在处理负数除法时结果完全不同:
- 示例:计算
-3 / 2时,//会得到-2(向下取整),但多项式除法需要向零取整得到-1,这就是测试用例输出结果不符合预期的直接原因。
次要问题:列表引用赋值
你代码中写 divid = dividend 属于引用赋值,没有创建新列表,会直接修改传入的原始被除数列表,属于不规范写法,虽然不影响本次运行结果,但可能在其他场景引发意料之外的问题。
修复方案
将除法行 divid[v] //= divis 替换为向零取整的实现即可:
# 方法1:先做浮点除法再转int,自动向零截断 divid[v] = int(divid[v] / divis) # 方法2:导入math模块使用trunc,逻辑更明确 import math divid[v] = math.trunc(divid[v] / divis)
如果需要省略余数的前导零,可以在输出余数前加一步处理:
# 去掉余数前导零,如果全零则保留一个0 while len(remainder) > 1 and remainder[0] == 0: remainder.pop(0)
内容的提问来源于stack exchange,提问作者Sklenik
相关产品推荐
相关产品推荐

