list 相加 大數相加

2021-10-11 14:24:30 字數 1581 閱讀 6517

演算法流程:

(1)大數可能超出任何一種整數型別,會引發溢位問題,所以用字串的格式儲存字串a,b;

(2)獲取字串a的長度為alen,字串b的長度為blen;

(3)比較alen和blen的大小,用maxlen儲存更大值。

(4)建立陣列aarr,大小為maxlen,儲存字串a每一位上的值

(5)建立陣列barr,大小為maxlen,儲存字串b每一位上的值,不夠的補0,

(6)建立陣列sumarr,大小為maxlen,儲存兩數之和。

(7)建立乙個整數用於儲存兩數相加的進製jin,初始化等於0,是因為兩個數的個位數相加進製一定等於0。

(9)因為兩數相加一般從個位開始,所以用sumarr[maxlen-1]儲存(a的個位+b的個位的+進製)的和除以10的餘數,獲取進製jin=(a的個位+b的個位的+進製)的和除以10的整除數

class solution(object):

def addtwonumbers(self, l1, l2):

""":type l1: list

:type l2: list

:rtype: list

"""l1 = list(reversed(l1))

l2 = list(reversed(l2))

l1,l2 = self.judgelen(l1,l2)

print(l1,l2)

add_nums =

for i in range(len(l1)):

add_num,flag = self.judgecarry(l1[i],l2[i])

if flag==0:

else:

try:

l1[i+1] = l1[i+1]+1

except:

continue

if add_nums[-1]==0:

print(list(reversed(add_nums)))

def judgecarry(self,a,b):

if a+b>9:

return [(a+b)%10,1]

else:

return [a+b,0]

def judgelen(self,l1,l2):

lenl1 = len(l1)

lenl2 = len(l2)

add_len =

for i in range(abs(lenl2-lenl1)):

if lenl1>=lenl2:

for i in range(abs(lenl2-lenl1)):

# print([l1,add_len])

return [l1,l2]

else:

for i in range(abs(lenl2-lenl1)):

# print([l2,add_len])

參考: csdn-專業it技術社群-登入​blog.csdn.net

大數相加演算法​www.jianshu.com

大數相加,大數相乘

題目 大數相加鏈結 思路 為了方便兩個字串相加,我們將短的字串,前面補0,最重要的一點是我們需要設定進製標誌ok class solution for int i size num2 i for int i longsize 1 i 0 i else ret c ret if ok 1 return...

大數相加 大數相乘 C

最簡單的思路是直接用int型陣列儲存大數的每一位,程式比較容易實現,但是效率稍低,直接上 include includeusing namespace std class bign bign const bign t bign operator const bign t bign operator ...

劫後餘生 大數相加,大數相減)

題目描述 lzy歷經千辛萬苦終於逃出了密室。他覺得這個密室很好玩,就想讓他的徒弟wyb也體驗一下。聽說wyb的a b學的滾瓜爛熟,特意出了一道加減法給她測測自己的底子,為進密室做做準備。輸入題目有多組輸入樣例,輸入三個非負整數 a,b,c 位數均不超過10000位 約束 對於每個測試資料檔案,測試樣...