1. Bostan-mori 算法
可以 Θ(M(L)logn) 求 [xn]G(x)F(x),其中 F(x) 和 G(x) 都是 Θ(L) 次多项式。
如果 n=0,那么 [x0]G(x)F(x)=[x0]G(x)[x0]F(x),可以直接计算。
否则 G(x)F(x)=G(x)G(−x)F(x)G(−x),令 H(x)=G(x)G(−x),则 H(x)=H(−x),所以 H(x) 奇数项全为 0。
令 G′(x2)=H(x),F0(x2)+F1(x2)x=F(x)。若 n 为奇数,[xn]G(x)F(x)=[x(n−1)/2]G(x)F1(x);若 n 为偶数,[xn]G(x)F(x)=[xn/2]G(x)F0(x)。
只需要 Θ(logn) 次多项式乘法即可。
2. LSB-first 算法
给定 a0,a1,…,ak−1,再给定 f1,f2,…,fk,已知序列 a 满足 ai=j=1∑kai−j×fj,求 anmod998244353 的值。
满足 n=109,k=3.2×104。
令 G(x)=1−i=1∑kfixi,A(x)=i≥0∑aixi,存在 k−1 次多形式 F(x)=i=0∑k−1(ai−j=0∑i−1aj⋅fi−j)xi,使得 A(x)=G(x)F(x),只需要求出 F(x) 就能用 Bostan-mori 算法求出答案。
而 F(x)=A(x)⋅G(x),已知 A(x) 与 G(x) 在模 xk 下的结果,于是可以直接卷积。
时间复杂度 Θ(M(k)logn)。