已知关于 x 的多项式 ∏ki=1(x+i) 的各项系数,欲求 ∏2ki=k+1(x+i) 的各项系数.
做法
记 F(x)=∏ki=1(x+i)=∑ki=0ci⋅xi,G(x)=∏2ki=k+1(x+i) ,则
G(x)=F(x+k)=k∑i=0ci⋅(x+k)i=k∑i=0ci⋅i∑j=0(ij)ki−jxj=k∑j=0k−jj!⋅xj⋅k∑i=j(ci⋅ki⋅i!)⋅1(i−j)!
对着系数稍微构造一下向量 a,b 就可以得到
G(x)=k∑j=0k−jj!⋅xj⋅2k∑i=0ai⋅bj+k−i
于是对 a,b 做一次卷积即可算出 G(x) 的各项系数,时间复杂度 O(klogk) .
应用
求多项式 F(x)=∏ni=1(x+i) 的各项系数.
若直接用分治 FFT 求解, 时间复杂度 O(nlog2n) .
考虑像快速幂那样倍增去做,记 m=⌊n2⌋ .
先求出 ∏mi=1(x+i) 的各项系数,用上面的做法 O(mlogm) 推出 ∏2mi=m+1(x+i) 的各项系数.
O(mlogm) 将它们乘起来得到 ∏2mi=1(x+i) 的各项系数,若 n 为奇数,再暴力乘上 (x+n) 这个单项式.
时间复杂度 T(n)=T(n2)+O(nlogn)=O(nlogn) .
Related Issues not found
Please contact @jkloverdcoi to initialize the comment