2018拼多多校招【大整數相乘】Python解法

思路

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

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章