高精度算法
当我们编写python时,我们可能会遇到两个很大的数字相加,这时候数字的长度超过了计算机所能表示的数的长度,所以传统的方法已经不可行了,这时候我们需要使用数组的方法
如下是相关问题与代码:
这道题的思想是采用数组一位一位的运算,然后将低位加到高位。
如果两个字符串长度不一样的话,我们需要重新考虑问题,列如:
当两个数字长度不一样我们需要在长度小的数字前面加“0”,然后进行运算
这一步求每一位相加后的结果并放于列表list3中,需要注意的是我们需要从低位开始运算,所以需要将输入的两个数字逆序化。
完整代码为:
a=input()
b=input()
a=a[::-1]
b=b[::-1]
list1=[]
list2=[]
list3=[]
list1.extend(a)
list2.extend(b)
c=map(eval,list1)
d=map(eval,list2)
list1=list(c)
list2=list(d)
s1=len(list1)
s2=len(list2)
c=0
if s1!=s2:
if s1>s2:
for i in range(s1-s2):
ss=eval("0")
list2.append(ss)
else:
for i in range(s2-s1):
ss=eval("0")
list1.append(ss)
s3=max(s1,s2)
for i in range(s3):
sum=list1[i]+list2[i]+c
c=sum//10
sum=sum%10
list3.append(sum)
sum=0
if i==s3-1 and c!=0:
list3.append(c)
list3=list3[::-1]
for i in range(len(list3)):
print(list3[i],end='')
注意输出时也需要逆序输出。