上一次寫這種類型的題目 應(yīng)該還是在讀書的時候啦
今天偶然同學(xué)問一段python代碼是啥意思 看了看 有點長
運行一下 像是大數(shù)相加 然后突然個想法 想試下 就寫了一小段代碼 運行了一下發(fā)現(xiàn)結(jié)果一樣 應(yīng)該行得通 記錄一下
就是將2個數(shù)組 每個數(shù)組對應(yīng)的位置的數(shù)字相加+新數(shù)組當前位置的值(默認是0)
放到新的數(shù)組對應(yīng)的位置 如果大于0新數(shù)組前一位變成1 當前位置%10
代碼如下
import time
L1="2649821731631836529481632803462831616487712734074314936141303241873417434716340124362304724324324324324323412121323164329751831"
L2="1045091731748365195814509145981509438583247509149821493213241431431319999999999999999999999999999999999999999999999999341344779"
startTime=time.time()
#長度強行扭轉(zhuǎn)到一致 不夠前面補0
max_len= len(L1) if len(L1)>len(L2) else len(L2)
l1=L1.zfill(max_len)
l2=L2.zfill(max_len)
a1=list(l1)
a2=list(l2)
#長度一致 每個對應(yīng)的位置的相加的和 %10 前一位補1 如果>10 否則0 99+99最大3位所以多一位
a3=[0]*(max_len+1)
for index in range(max_len-1,-1,-1):
index_sum=a3[index+1]+int(a1[index])+int(a2[index])
less=index_sum-10
a3[index+1]=index_sum%10
a3[index]=1 if less>=0 else 0
if(a3[0]==0):
a3.pop(0)
a33=[str(i) for i in a3]
print(''.join(a33))
print('耗時{0}ms'.format(time.time()-startTime))