求解所有的变量的所有次幂的每一种的和

标题很丑。。。

问题描述

(n) 个变量 (a_n),求所有的

[s_j=sum_{i=1}^{n}a_i^j, j in [0,m] ]

解决

(O(n*m)) 太暴力了

一个比较好的方法

[F(x)=Pi_{i=1}^{n}(a_ix+1) ]

[Ln(F(x))=sum_{i=1}^{n}Ln(a_ix + 1) ]

考虑这个 (Ln(a_ix+1)) 是个什么

[Ln'(a_ix+1)=frac{a_i}{a_ix+1}=sum_{j=0}(-1)^ja_i^{j+1}x^j ]

等比数列求和可证
那么就有两种方法
方法一

[Ln'(F(x))=sum_{i=1}^{n}Ln'(a_ix + 1)=sum_{i=1}^{n}sum_{j=0}(-1)^ja_i^{j+1}x^j ]

就是

[sum_{j=0}(-1)^j(sum_{i=1}^{n}a_i^{j+1})x_j ]

那么分治 (FFT) 然后求 (Ln) 再 求导即可
方法二

[Ln'(a_ix+1)=frac{a_i}{a_ix+1}=sum_{j=0}(-1)^ja_i^{j+1}x^j ]

把它积分一下

[Ln(a_ix+1)=sum_{j=1}frac{(-1)^{j-1}a_i^{j}}{j}x^{j} ]

那么

[Ln(F(x))=sum_{i=1}^{n}sum_{j=1}frac{(-1)^{j-1}a_i^{j}}{j}x^{j} ]

[Ln(F(x))=sum_{j=1}frac{(-1)^{j-1}}{j}(sum_{i=1}^{n}a_i^j)x^{j} ]

那么分治 (FFT) 然后求 (Ln) 即可

还有一只 (log) 的做法,见 (zzq)博客

原文地址:https://www.cnblogs.com/cjoieryl/p/9172520.html