在了解完FFT的理论与算法流程之后,最重要的当然就是写代码啦,下面的两份代码将展示FFT在多项式乘法与高精度乘法中的运用。
在那之前,还有一个重要的东西:
因为下面写的是迭代的FFT代码,而不是采用递归,所以多了一个对rev[]的处理:
我们假设每次将奇数项元素提出来之后,将其放到了序列的最后,如下:
01234567
变成:
02461357
我们一直这样分下去,就变成了:
04261537
我们把其中每个数的二进制翻转过来,发现是递增的:从0到7
那么,rev[i]存的就是将i的二进制位翻转过来的值,也就值i在底层的位置。
题目描述
给定一个n次多项式F(x),和一个m次多项式G(x)。
请求出F(x)和G(x)的卷积。
输入输出格式
输入格式:
第一行2个正整数n,m。
接下来一行n+1个数字,从低到高表示F(x)的系数。
接下来一行m+1个数字,从低到高表示G(x))的系数。
输出格式:
一行n+m+1个数字,从低到高表示F(x)∗G(x)的系数。
输入输出样例
输入样例#1:
1 2
1 2
1 2 1
输出样例#1:
1 4 5 2
#include
#prag\
ma GCC o