请帮我写一段代码,设计两个函数,分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过100的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出 。
时间: 2024-02-21 20:57:44 浏览: 71
duoxiangshi.rar_ duoxiangshi_编程求 两个 一元多项式 乘积
好的,以下是代码实现:
```python
def multiply_poly(poly1, poly2):
"""
计算两个一元多项式的乘积
参数:
poly1 - 第一个一元多项式,类型为 list,每个元素是一个 tuple,表示一个单项式的系数和指数
poly2 - 第二个一元多项式,类型为 list,每个元素是一个 tuple,表示一个单项式的系数和指数
返回值:一个 list,每个元素是一个 tuple,表示一个单项式的系数和指数,表示两个多项式的乘积
"""
res = []
for coef1, exp1 in poly1:
for coef2, exp2 in poly2:
coef = coef1 * coef2
exp = exp1 + exp2
if coef != 0:
res.append((coef, exp))
return res
def add_poly(poly1, poly2):
"""
计算两个一元多项式的和
参数:
poly1 - 第一个一元多项式,类型为 list,每个元素是一个 tuple,表示一个单项式的系数和指数
poly2 - 第二个一元多项式,类型为 list,每个元素是一个 tuple,表示一个单项式的系数和指数
返回值:一个 list,每个元素是一个 tuple,表示一个单项式的系数和指数,表示两个多项式的和
"""
res = []
i, j = 0, 0
while i < len(poly1) and j < len(poly2):
coef1, exp1 = poly1[i]
coef2, exp2 = poly2[j]
if exp1 == exp2:
coef = coef1 + coef2
exp = exp1
i += 1
j += 1
elif exp1 > exp2:
coef = coef1
exp = exp1
i += 1
else:
coef = coef2
exp = exp2
j += 1
if coef != 0:
res.append((coef, exp))
while i < len(poly1):
res.append(poly1[i])
i += 1
while j < len(poly2):
res.append(poly2[j])
j += 1
return res
# 读取输入
m = int(input())
poly1 = []
for i in range(m):
coef, exp = map(int, input().split())
poly1.append((coef, exp))
n = int(input())
poly2 = []
for i in range(n):
coef, exp = map(int, input().split())
poly2.append((coef, exp))
# 计算乘积和和
product = multiply_poly(poly1, poly2)
sum_poly = add_poly(poly1, poly2)
# 输出乘积和和
if len(product) == 0:
print("0")
else:
product.sort(key=lambda x: x[1], reverse=True)
print(" ".join([f"{coef} {exp}" for coef, exp in product]))
if len(sum_poly) == 0:
print("0")
else:
sum_poly.sort(key=lambda x: x[1], reverse=True)
print(" ".join([f"{coef} {exp}" for coef, exp in sum_poly]))
```
这段代码中,`multiply_poly()` 函数用来计算两个一元多项式的乘积,`add_poly()` 函数用来计算两个一元多项式的和。输入部分读取两个多项式的系数和指数,输出部分先判断乘积和和是否为空,如果不为空则按指数递降排序并输出。
阅读全文