[模板] MTT实现之FFT拆系数
题目描述: 求两个多项式的卷积,系数对P取模,不保证P可以分解成 P = a ⋅ 2 k + 1 P = a ⋅ 2 k + 1 //--> 题目分析: P不保证分解成那个形式,那么我们就不可以用NTT了. 如何解决这个问题呢? 拆系数+FFT~ 基本上就是找个模数 然后拆成4个多项式,分别是第一个多项式 / 模数 %模数 第二个多项式 / 模数 %模数 的值 然后两两相乘,结果 乘上对应项数的模数次方然后%要取的模数 这样的话是做4次DFT,4次IDFT 然而单位复根的精度貌似会出问题 可以预处理,懒得话可以开long double 题目链接: Luogu 4245 Ac 代码: #include<cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> #include <iostream> #define ll long long #define double long double const double PI= std :: acos (- 1 ); const int maxm= 5e5 + 100 ,M= 32768 ; struct complex { double real,imag; complex (){}; complex ( double