编写一个程序实现两个一元多项式相乘。 【输入形式】 首先输入第一个多项式中系数不为0的项的个数,然后在新的一行上输入以空格分隔的整数,代表一个多项式,且该多项式中各项的系数均为0或正整数,最高幂次不超过50。对于多项式 anxn + an-1xn-1+ ... + a1x1 + a0x0 (n<50)的输入方法如下: an n an-1 n-1 ... a1 1 a0 0 即相邻两个整数分别表示表达式中一项的系数和指数。在输入中只出现系数不为0的项。 按照上述方式再输入第二个多项式。 【输出形式】 将运算结果输出到屏幕。将系数不为0的项按指数从高到低的顺序输出,每次输出其系数和指数,均以一个空格分隔。最后要求换行。
时间: 2023-12-03 22:42:45 浏览: 154
一元多项式的设计思路和源码
```python
n1 = int(input()) # 第一个多项式中系数不为0的项的个数
poly1 = {} # 存储第一个多项式的系数和指数
for i in range(n1):
a, b = map(int, input().split()) # 输入一个项的系数和指数
poly1[b] = a # 将该项的系数和指数存储到字典中
n2 = int(input()) # 第二个多项式中系数不为0的项的个数
poly2 = {} # 存储第二个多项式的系数和指数
for i in range(n2):
a, b = map(int, input().split()) # 输入一个项的系数和指数
poly2[b] = a # 将该项的系数和指数存储到字典中
res = {} # 存储结果多项式的系数和指数
for b1, a1 in poly1.items():
for b2, a2 in poly2.items():
b = b1 + b2 # 计算相乘后的项的指数
a = a1 * a2 # 计算相乘后的项的系数
if b in res: # 如果该项已存在,则将系数相加
res[b] += a
else: # 如果该项不存在,则将该项的系数和指数存储到字典中
res[b] = a
# 将结果按指数从高到低排序
res = sorted(res.items(), key=lambda x: x[0], reverse=True)
# 输出结果
for b, a in res:
print(a, b)
print() # 换行
```
注:此程序中使用了字典存储多项式的系数和指数,可以避免输入时按指数顺序存储的问题,同时也方便计算相乘结果。
阅读全文