思路
大整數相乘,其實完全套用了列豎式計算乘法的思路,重點就是講豎式計算這一過程用代碼表示。豎式計算中,一個乘數會和另一個乘數逐位相乘,從個位到最高位,相乘的結果依次左移一位,最後將多個計算結果相加即可,而左移一位其實就是“”,期間同時考慮進位加至前一位,這樣整個思路就很清晰了。
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