思路
大整数相乘,其实完全套用了列竖式计算乘法的思路,重点就是讲竖式计算这一过程用代码表示。竖式计算中,一个乘数会和另一个乘数逐位相乘,从个位到最高位,相乘的结果依次左移一位,最后将多个计算结果相加即可,而左移一位其实就是“”,期间同时考虑进位加至前一位,这样整个思路就很清晰了。
Python代码
data = input().split()
strA, strB = data[0], data[1]
lenA, lenB = len(strA), len(strB)
out = [0]*(lenA+lenB+1)
if lenA > lenB:
strA, strB = strB, strA
lenA, lenB = lenB, lenA
jinwei = 0
for i in range(lenA):
for j in range(lenB):
out[i+j] += (int(strA[lenA-1-i])) * (int(strB[lenB-1-j]))
out[i+j+1] += out[i+j] // 10
out[i+j] %= 10
out.reverse()
for i in range(len(out)):
if out[i] != 0:
print(''.join(str(c) for c in out[i:]))
break