高效的的c++代码
时间: 2023-09-26 18:09:24 浏览: 78
好的,这是一个使用快速傅里叶变换(FFT)实现的高效C++代码,可以将多项式乘法的时间复杂度从O(nm)优化到O(n log n)。
在代码中,我们使用了第三方库`FFT`来实现FFT算法,可以通过`pip install numpy`命令安装。以下是代码示例:
```c++
#include<bits/stdc++.h>
#include<FFT>
using namespace std;
const int MAXN = 1 << 19;
FFT::Complex A[MAXN], B[MAXN];
int main() {
int n, m;
cin >> n >> m;
for (int i = 0; i <= n; i++) cin >> A[i].real;
for (int i = 0; i <= m; i++) cin >> B[i].real;
FFT::FFT(A, n + 1, 1);
FFT::FFT(B, m + 1, 1);
for (int i = 0; i < MAXN; i++) {
A[i] *= B[i];
}
FFT::FFT(A, n + m + 1, -1);
for (int i = 0; i <= n + m; i++) {
cout << (int)(A[i].real / MAXN + 0.5) << " ";
}
return 0;
}
```
该代码首先从标准输入读取两个多项式的次数n和m,以及它们的系数。然后,使用FFT算法计算乘积的系数,并将结果存储在A数组中。最后,将结果打印到标准输出。
需要注意的是,该代码使用了`FFT`第三方库,需要安装并引入。在计算结果时,需要将复数部分取整,即`(int)(A[i].real / MAXN + 0.5)`。
希望对你有所帮助!