题目大意
计算a+b
,a
和b
都是多项式
输入
每组输入包含一个测试样例,每个样例有两行,每行是一个多项式的信息:
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
1≤k≤10,0≤NK≤...<N2<N1≤1000
输出
在一行中输出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 ''))