两个一元多项式乘法代码
时间: 2023-06-02 21:01:53 浏览: 118
下面是Python实现的两个一元多项式乘法代码示例:
1. 使用列表存储一元多项式
```python
def poly_mult(poly1, poly2):
"""
一元多项式乘法,使用列表存储多项式系数
:param poly1: 多项式1,如 [3, 2, 1] 表示 3x^2 + 2x + 1
:param poly2: 多项式2,如 [4, 2] 表示 4x + 2
:return: 乘积多项式,如 [12, 14, 4, 1] 表示 12x^3 + 14x^2 + 4x + 1
"""
m, n = len(poly1), len(poly2)
res = [0] * (m + n - 1)
for i in range(m):
for j in range(n):
res[i+j] += poly1[i] * poly2[j]
return res
```
2. 使用字典存储一元多项式
```python
def poly_mult(poly1, poly2):
"""
一元多项式乘法,使用字典存储多项式系数
:param poly1: 多项式1,如 {2: 3, 1: 2, 0: 1} 表示 3x^2 + 2x + 1
:param poly2: 多项式2,如 {1: 4, 0: 2} 表示 4x + 2
:return: 乘积多项式,如 {3: 12, 2: 14, 1: 4, 0: 1} 表示 12x^3 + 14x^2 + 4x + 1
"""
res = {}
for i, a in poly1.items():
for j, b in poly2.items():
res[i+j] = res.get(i+j, 0) + a * b
return res
```
这两个函数的输入参数都是两个多项式,其中`poly1`和`poly2`可以用列表或字典表示。输出结果也是一个多项式,同样用列表或字典表示。其中,`poly_mult`函数使用的是暴力算法,时间复杂度为$O(mn)$,其中$m$和$n$分别为两个多项式的项数。如果使用更高效的Karatsuba算法可以将时间复杂度降为$O(n^{\log_2 3})$。
阅读全文