在NxM乘法中,部分积的宽度可以小于N+M。下面给出一个Python示例:
def multiply(a, b):
result = [0] * (len(a) + len(b)) # 初始化一个长度为len(a)+len(b)的结果数组
for j in range(len(b)):
carry = 0
for i in range(len(a)):
temp = a[i] * b[j] + carry + result[i+j]
carry = temp // 10
result[i+j] = temp % 10
result[j+len(a)] = carry
# 去掉结果数组开头的零
while len(result) > 1 and result[-1] == 0:
result.pop()
return result
这里的multiply函数可以计算任意长度的两个数字的乘积,部分积的宽度不超过N+M。在乘法过程中,每位数字的乘积和当前位置之前的部分积对应相加,得到当前位置的部分积,并计算进位。最后,将结果数组开头的零去掉,得到最终的乘积。