蓝桥杯Python高精度加法
一、算法描述
1.可能出现输入的a,b其位数不等,那么多出来的位数的数+上一位的进位,可以直接加入到最终结果中。
2.对于可以同位数相加的位数,其留下来的结果等于:和除以10的余数+上一位的进位(1或者0)。
二、注意事项
1.先捋清楚思路再打代码。
2.先用[::-1]倒过来。
3.注意int还是str:str有索引,可以用[ ];而int没有。
4.本人小白,请多指教!!
三、代码
a=input()
b=input()
c=a[::-1]
d=b[::-1]
s=0
list1=[] #用于储存结果
long=max(len(a),len(b))
short=min(len(a),len(b))
for i in range(short):
z=int(c[i])+int(d[i])
if int(z)>10:
y=int(z)%10
j=y+s #某位数等于这位数相加的结果除以10的余数+上一位数的进位
s=1 #如果同位数的相加结果大于10,说明有进位
else:
j=int(z)+int(s)
list1.append(str(j))
if len(a)>len(b): #多出来的高位直接放进去list1
duo=len(a)-len(b)
jia=a[0:duo]
jia2=int(jia)+s
list1.append(jia2)
elif len(b)>len(a):
duo=len(b)-len(a)
jia=b[0:duo]
jia2=int(jia)+s
list1.append(jia2)
list2=list1[::-1]
for j in range(len(list2)):
print(list2[j],end='')