蓝桥杯Python高精度加法(超详细!!)

蓝桥杯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='')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值