正整数幂与伯努利数
十分神仙。
考虑正整数幂:
假设我们给定了 (n) 被要求求解 (k={1,2,3...10^5}) 时的答案,怎么办( (n) 非常大 )。
考虑一个构造,我们构造 (mathbf{EGF}) 来计算答案,设 (S_k(n)=sum_{i=1}^n i^k),我们构造 (mathbf{EGF}) 为:
容易注意到:
然后考虑
那么直接展开分子,然后求个分母的逆即可,复杂度 (mathcal O(klog k))
对于某个具体的 (k) 考虑快速的求解此多项式:
考虑构造,假设能够将 (G_n(x)) 表示为两个多项式的卷积,同时其中一个恰好为以 (n) 的次幂为系数的多项式,那么我们容易得到系数即卷积结果,换而言之得到其多项式表达式。
事实上,我们注意到:
注意到后者本质是 (mathbf{EGF}{frac{n}{1},frac{n^2}{2},frac{n^3}{3}...frac{n^{i+1}}{i+1}}),请注意描述 (mathbf{EGF}) 系数序列时默认除以 (i!)
然后考虑 (frac{xe^x}{e^x-1}) 的展开式,我们认为其展开式的对应级数为 (mathbf{EGF}{B_0,B_1...})
所以我们得到:
这样就得到了 (sum_{i=0}^n i^k) 这个关于 (n) 的多项式 (S_k(n)) 的通式了。
如何求解伯努利数
注意到伯努利数本质上是 (frac{xe^x}{e^x-1}) 的展开式,所以求逆即可。
如何优雅的暴力
注意到:
所以 (mathbf{EGF}{B_0,B_1...} imes mathbf{EGF}{frac{1}{1},frac{1}{2},frac{1}{3}...}=mathbf{EGF}{1,1,1...})
所以我们有:
以 (B_0=1) 为边界,我们可以依次递推得到 (B_i),复杂度 (mathcal O(k^2))
例题:
给定 (n) 个数 (a_{1sim n}) 以及常数 (k),求:
( m Sol:)
后者考虑通过伯努利数求得其展开多项式,我们所求变为:
于是只需要求后者。
考虑构造多项式 (F_i(x)=sum_{j=0}^{infty} a_i^j x^j)
那么所求即 (sum F_i(x)) 的系数序列,设为 (G(x))
注意到 (F_i(x)) 显然可以收敛为 (frac{1}{1-a_ix}),那么所求即:
下面可以分治 NTT 处理,上面可以考虑组合意义,注意到下面计算式的 ([x^k]) 处系数等价于从 (n) 个括号中选出 (k) 个 (-a_ix) 的权值和,那么分子即选出 (k) 个后再从剩余的元素中删去一个方案数,所以有 (f_i'=f_i imes (n-i))
然后直接计算答案即可,复杂度 (mathcal O(nlog^2 n+klog k))