龙空技术网

[leecode题目]超大整数相加Python实现

coding老王 151

前言:

此刻姐妹们对“python 最大整数”大约比较注意,咱们都想要剖析一些“python 最大整数”的相关文章。那么小编在网上收集了一些有关“python 最大整数””的相关资讯,希望兄弟们能喜欢,小伙伴们一起来了解一下吧!

超过一定长度的整数相加会溢出,那怎么实现超大整数数相加呢?

可能有人说,直接相加不行么,可能真不行,超过了类型长度会溢出

答案是用字符串来表示大整数,对齐位数逆排序后,按位相加,处理进位,就可以实现.

具体算法实现,请看代码.

big_a="919999999999999999999999999999999999990"big_b="99999999999999999999999999999999999999999999999999"#高位补0if len(big_a)>len(big_b):    need_zero=len(big_a)-len(big_b)    big_b="{}{}".format(r"0"*need_zero,big_b)elif len(big_a)<len(big_b):    need_zero=len(big_b)-len(big_a)    big_a="{}{}".format(r"0"*need_zero,big_a)sum=[0]*(len(big_a)+1) #加上是为了解决高位相加有进位# 翻转字符串big_a=list(big_a[::-1])big_b=list(big_b[::-1])# 执行高位相加for i,v in enumerate(big_a):    tmp_add=int(big_b[i])+int(v)+sum[i]    if tmp_add>=10: #有进位        q,r=divmod(tmp_add,10)        sum[i]=r    #余数        sum[i+1]=q # 商    else:        sum[i]=tmp_add# 重新翻转回来sum=sum[::-1]print("".join(str(v) for v in sum))
100000000000919999999999999999999999999999999999989

可以说是非常简单了

标签: #python 最大整数 #python最大整数部分