PAT1 1002 A+B for Polynomials

题目链接
我的github

题目大意

计算a+bab都是多项式

输入

每组输入包含一个测试样例,每个样例有两行,每行是一个多项式的信息:
K N 1 a 1 N 2 a 2 . . . N K a k KN_1a_1N_2a_2...N_Ka_k KN1a1N2a2...NKak
K K K是多项式中非0项的个数 N i N_i Ni a i a_i ai分别是指数和系数
1 ≤ k ≤ 10 , 0 ≤ N K ≤ . . . < N 2 < N 1 ≤ 1000 1 \leq k \leq10, 0 \leq N_K \le ...<N_2<N_1 \leq 1000 1k10,0NK...N2N11000

输出

在一行中输出a+b,且要求用和输入相同的方式输出,系数的精度要求精确到小数点后一位

样例输入

2 1 2.4 0 3.2
2 2 1.5 1 0.5

样例输出

3 2 1.5 1 2.9 0 3.2

解析

由于多项式已经排好序了,那么在相加的过程中直接从指数最大的开始加,注意加的结果中不能出现系数为0的项

a=list(map(float, input().split()))
b=list(map(float, input().split()))
res=list()
res.append(0)
posA=1
posB=1
while True:
    if posA>=len(a):  #判断a是否加完
        if posB>=len(b):  #判断b是否加完
            break
        else:
            res[0]+=1
            res.append(b[posB])
            res.append(b[posB+1])
            posB+=2
    else:
        if posB>=len(b):
            res[0]+=1
            res.append(a[posA])
            res.append(a[posA+1])
            posA+=2
        else:
            if a[posA]==b[posB]:    #如果ab指数相等
                if a[posA+1]+b[posB+1]!=0:   #系数和不为0
                    res[0]+=1
                    res.append(a[posA])
                    res.append(a[posA+1]+b[posB+1])
                    posA+=2
                    posB+=2
                else:
                    posA+=2
                    posB+=2
            else:
                if a[posA]<b[posB]:
                    res[0]+=1
                    res.append(b[posB])
                    res.append(b[posB+1])
                    posB+=2
                else:
                    res[0]+=1
                    res.append(a[posA])
                    res.append(a[posA+1])
                    posA+=2
print(res[0], end="")
for i in range(1, len(res), 2):
    print(' %d %.1f' % (res[i], res[i+1]), end=('\n' if i==len(res)-1 else ''))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值