暴力插值
给你 (n) 个点 ((x_i,y_i)) ,要求求出这个 (n-1) 次多项式 (F(x))
我们有
感性愉悦认识一下这个拉格朗日插值
复杂度 (O(n^2))
多点求值
给你 (X={x_0,x_1,x_2,dots,x_{m-1}}) 和 一个 (n) 次多项式 (A) ,要求求出 (Y={A(x_0),A(x_1),A(x_2),dots,A(x_{m-1})})
将需要求的点值分成两个子任务 (X_1={x_0,x_1,dots,x_{lfloorfrac{m}{2} floor}},X_2={x_{lfloorfrac{m}{2} floor+1},x_{lfloorfrac{m}{2} floor+2},dots,x_{m-1}})
若已经完成了 (X_1) 与 (X_2) 两个子任务的多点求值,且分别用 (X_1) 与 (X_2) 两个集合中的点插值得到的多项式为 (A_1(x),A_2(x))
考虑构造两个多项式 (P_1(x)=prodlimits_{0le ile lfloorfrac{m}{2} floor}(x-x_i)) , (P_2(x)=prodlimits_{lfloorfrac{m}{2} floor<i<m}(x-x_i))
考虑 (A(x)=Q_1(x)P_1(x)+A_1(x)) ,我们将 (xin X_1) 的点代入,发现左边这个式子是成立的。
于是我们可以得到 (A_1(x)=A(x) mod P_1(x))
对 (A_2) 同理,然后我们可以两边递归求解
可以发现对于所有的 (P) 实际上在做分治合并的过程中都可以求,我们只需要存下来就可以了
根据主定理可以得到复杂度为 (O(nlog^2 n))
多项式取余
其中 (deg A=n,deg B=m,deg R=n-m,m<n)
定义翻转操作 (A^r=x^nA(frac{1}{x})),其中 (n=deg A)
将 (x=frac{1}{x}) ,并将两边同乘 (x^n)
代码晚点补