02-线性结构2 一元多项式的乘法与加法运算 (PTA)

设计函数分别求两个一元多项式的乘积与和。

输入格式:

输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

输出格式:

输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0

输入样例:

4 3 4 -5 2  6 1 -2 0
3 5 20  -7 4  3 1

输出样例:

15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
5 20 -4 4 -5 2 9 1 -2 0

编译器:Python(python3)

p1 = list(input().split())
p2 = list(input().split())

d1 = {}
d1c = {}
d2 = {}
d2c = {}

d3 = {}
d4 = {}

list1 = []
list2 = []

for i in range(1,len(p1),2):
    if int(p1[i]) !=0:
        d1[int(p1[i+1])] = int(p1[i])
for i in range(1,len(p2),2):
    if int(p2[i]) !=0:
        d2[int(p2[i+1])] = int(p2[i])
    
#polu multi    
d1c = d1.copy()
d2c = d2.copy()
for k1 in d1c:
    for k2 in d2c:
        temp = d4.get(k1+k2,0) + d1c.get(k1)*d2c.get(k2)
        if temp !=0:
            d4[k1+k2] = temp
        else:
            del d4[k1+k2]
            
if len(d4) != 0:            
    for i in sorted(d4.keys(),reverse = True):
        list1.append(str(d4[i]))
        list1.append(str(i))
else:
    list1.append(str(0))
    list1.append(str(0))




#poly plus
d3 = d2.copy()
for k1 in d1:
    temp = d3.get(k1,0) + d1.get(k1)
    if (temp!=0):
        d3[k1] = temp
    else:
        del d3[k1]

if len(d3) != 0: 
    for i in sorted(d3.keys(),reverse = True):
        list2.append(str(d3[i]))
        list2.append(str(i))
else:
    list2.append(str(0))
    list2.append(str(0))

print(' '.join(list1))
print(' '.join(list2))  

发表评论

您的电子邮箱地址不会被公开。