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