给定两个$n$次多项式$F(x),G(x)$的系数数列$a,b$和一个整数$p$,求$F(x)G(x)$在$\bmod p$意义下的值,不保证$p$可以分解成$a\cdot 2^k+1$的形式。
Data Range:$1\leq n\leq 10^5,0\leq a_i,b_i\leq 10^9,2\leq p\leq 10^9+9$
链接
题解
如果$p$是形如$a\cdot 2^k+1$的质数,可以直接刚$\texttt{NTT}$,但是布星啊,样例中的$p$都不是质数,所以说怎么办呢?
用$\texttt{NTT}$计算多项式乘法的最终结果是取模后的,所以考虑采用$\texttt{CRT}$合并答案。
但是,答案要在$\texttt{long long}$范围内唯一,所以取两个模数布星,要取三个,即所谓的三模数$\texttt{NTT}$。
这里我个人倾向于取$p_1=469762049$,$p_2=998244353$和$p_3=1004535809$,因为这三个数的原根是$3$。
于是可以通过$\texttt{NTT}$算出所给的多项式在模$p_1,p_2,p_3$意义下的乘积。
坑。
代码
1 |
|