PAT 乙级 1074 宇宙无敌加法器 python

题目
在这里插入图片描述

在这里插入图片描述
思路
根据短的pat数逆序逐位计算
两数相加某个数位的值为这个数位的两个数相加之和sum除以这个数位的进制的余数
向相邻高位的进位数值时sum除以数位进制的商
利用str.rstrip('0') 函数 去掉结果末端多余的0
测试点五则为两数结果相加为0时,至少应该输出0
代码

base=input()
A=input()
B=input()

temp=A
if len(A)>len(B):
    A=B
    B=temp

a_len=len(A)  #3
b_len=len(B) #5

l = b_len - a_len
base_position=-1

pat=''
jinwei=0

for i in range(len(A)-1,-1,-1):
    B_poistin =i+l
    sum=int(A[i])+int(B[B_poistin])+jinwei
    base_item=base[base_position]
    if base_item=='0':
        base_item=10
    jinwei=int(sum/int(base_item))
    pat=pat+str(sum%int(base_item))
    base_position=base_position-1

for i in range(B_poistin-1,-1,-1):
    sum=jinwei+int(B[i])
    base_item=base[base_position]
    if base_item=='0':
        base_item=10
    jinwei = int(sum / int(base_item))
    pat=pat+str(sum%int(base_item))
    base_position = base_position - 1

if jinwei!=0:
    pat = pat + str(jinwei)

pat_final=pat.rstrip('0') #去掉末端多余的0
print_=''
for i in range(len(pat_final)-1,-1,-1): #逆序输出
    print_=print_+pat_final[i]

if print_:
    print(print_)
else: #测试点5 考虑到结果全为0时,输出0
    print('0')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值