天天看點

拼多多校招----大整數相乘(python)一、題目二、代碼實作 

一、題目

題目描述

有兩個用字元串表示的非常大的大整數,算出他們的乘積,也是用字元串表示。不能用系統自帶的大整數類型。

輸入描述:

空格分隔的兩個字元串,代表輸入的兩個大整數
           

輸出描述:

輸入的乘積,用字元串表示
           
示例1

輸入

72106547548473106236 982161082972751393
           

輸出

70820244829634538040848656466105986748
           

二、代碼實作

from math import floor
s = input().split(' ')
alen = len(s[0])
blen = len(s[1])
a = []
b = []
for i in range(alen):
    a.append(int(s[0][alen-i-1]))
for i in range(blen):
    b.append(int(s[1][blen-i-1]))
answer = [0]*10000
for i in range(alen):
    label = i
    for j in range(blen):
        t = a[i]*b[j]
        answer[label] = answer[label] + t
        answer[label+1] += int(floor(answer[label]/10))
        answer[label] %= 10
        for k in range(10):
            if int(floor(answer[label+k+1]/10)) != 0:
                answer[label+k+2] += int(floor(answer[label+k+1]/10))
                answer[label+k+1] %= 10
            else:
                break
        label += 1
i = 9999
while answer[i] == 0:
    i -= 1
while i >= 0:
    print(answer[i], end='')
    i -= 1