c++实现一元多项式乘法
时间: 2024-11-24 16:23:54 浏览: 14
用单链表实现一元多项式的乘法(c++).
4星 · 用户满意度95%
在C++中,可以使用动态数组或向量来实现一元多项式的乘法,通常我们称为“Polynomial Multiplication”。这种操作涉及到逐项相乘并合并结果的过程。下面是一个简单的示例,展示了如何使用结构体存储系数和指数,并通过函数实现两个多项式的点积:
```cpp
#include <vector>
using namespace std;
// 定义多项式结点
struct Term {
int coefficient; // 系数
int exponent; // 指数
};
// 实现多项式类
class Polynomial {
private:
vector<Term> terms; // 存储多项式的各个项
public:
void addTerm(int coef, int exp) { // 添加项到多项式
terms.push_back({coef, exp});
}
// 一元多项式乘法 - 采用 Horner's Method (霍纳法则)
Polynomial multiply(Polynomial other) const {
Polynomial result;
for (const auto& term : other.terms) {
int newCoefficient = 0;
for (int i = 0; i < terms.size(); ++i) {
newCoefficient += terms[i].coefficient * pow(term.exponent + i, term.exponent);
}
result.addTerm(newCoefficient, term.exponent); // 保持原始多项式的指数
}
return result;
}
};
// 示例
int main() {
Polynomial p1 = Polynomial();
p1.addTerm(2, 1); // 2x^1
p1.addTerm(1, 2); // 1x^2
Polynomial p2 = Polynomial();
p2.addTerm(3, 0); // 3x^0 (即常数项)
Polynomial product = p1.multiply(p2);
return 0;
}
```
在这个例子中,`multiply()` 函数利用了 Horner's Method 来计算结果,它避免了直接创建所有可能的乘积项,提高了效率。
阅读全文