高精度算法

当我们编写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='')

注意输出时也需要逆序输出。