Preface
首先我们需要的前置知识有:
- 多项式取模
- 余式定理
多项式取模可以看这里
余式定理的内容是这样的:
对于多项式F(x),其在x=x0处的点值等于F(x) mod (x-x0)
因为除式是个一次式,那么余式一定是一个常数
Procedure
考虑分治
假设我们要求多项式
F
(
x
)
F(x)
F(x)在(x0…xn-1)这n个点的点值
设 P l , r ( x ) = ∏ i = l r ( x − x i ) , F l , r ( x ) = F ( x ) m o d    P l , r ( x ) P_{l,r}(x)=\prod\limits_{i=l}^{r} (x-x_i),F_{l,r}(x)=F(x)\mod P_{l,r}(x) Pl,r(x)=i=l∏r(x−xi),Fl,r(x)=F(x)modPl,r(x)
显然 F i , i ( x ) = F ( x i ) F_{i,i}(x)=F(x_i) Fi,i(x)=F(xi)
我们知道当 c ∣ b c|b c∣b时, ( a m o d    b ) m o d    c = a m o d    c (a\mod b)\mod c=a\mod c (amodb)modc=amodc
那么分治的时候,
F
l
,
m
i
d
(
x
)
=
F
l
,
r
(
x
)
m
o
d
  
P
l
,
m
i
d
(
x
)
F_{l,mid}(x)=F_{l,r}(x)\mod P_{l,mid}(x)
Fl,mid(x)=Fl,r(x)modPl,mid(x)
先分治FFT预处理出所有区间的P(显然总次数和是n log n)的
然后递归分治做即可
总的复杂度是 O ( n log 2 n ) O(n\log ^2 n) O(nlog2n)
Code
https://blog.csdn.net/hzj1054689699/article/details/80050733