自然数幂和
作者:互联网
听说一个人的数论要用伯努利数处理自然数幂和,然而我之前只会插值,吓得跑去学了一下自然数幂和 .
附录 — 前置知识
插值相关:看我的博客 link(旧文慎入) .
第二类斯特林数相关:
定义:第二类斯特林数 \(\displaystyle{n\brace k}\) 表示 \(n\) 个有标号小球放入 \(k\) 个无标号集合,每个集合都非空的方案数 .
然后根据组合意义(这个证明和二项式系数那个差不多),可以得到递推式:
\[\boxed{{n\brace k}=k{n-1\brace k}+{n-1\brace k-1}} \]然后这个可以 \(O(n^2)\) 递推 .
然后前面是不是说了
\[\boxed{n^k=\sum_{i=0}^k{k\brace i}n^{\underline i}} \]套二项式反演(你也可以看成套了一个容斥),然后变成
\[{n\brace m}=\dfrac1{m!}\sum_{i=0}^m(-1)^i\dbinom mi(m-i)^n \]是不是卷积的形式 .
于是可以 \(O(n\log n)\) 卷积求一行 .
伯努利数相关:
伯努利数 \(\{B\}\) 是如下定义的有理数序列:
\[\sum_{i=0}^n\dbinom{n+1}iB_i=0 \]其中 \(B_0=1\) .
然后可以根据定义 \(O(n^2)\) 求 .
我们考虑整出它的 EGF .
显然式子是不是可以改成
\[\sum_{i=0}^n\dbinom{n+1}iB_i=[n=0] \]做一些平凡的操作:
\[\begin{aligned}&\sum_{i=0}^n\dbinom{n+1}iB_i=[n=0]\\\Longleftrightarrow&\sum_{i=0}^{n+1}\dbinom{n+1}i=B_{n+1}+[n=0]\\\Longleftrightarrow&\sum_{i=0}^{n}\dbinom ni=B_{n}+[n=1]\\\Longleftrightarrow&\dfrac{B_n}{n!}+[n=1]=\sum_{i=0}^n\dfrac1{(n-i)!}\cdot\dfrac{B_i}{i!}\end{aligned} \]这就有点 EGF 的样子了,改成 EGF 的形式:
\[\operatorname B(x)+x=\operatorname B(x)\exp(x) \]然后显然就有
\[\boxed{\operatorname B(n)=\dfrac{x}{\exp(x)-1}} \]于是可以一次求逆做到 \(O(n\log n)\) 求一行 求前 \(n\) 项 .
目录
自然数幂和
(题目链接:CF622F)
求
\[S_k(n)=\sum_{i=0}^ni^k \]做法
插值
差分一次变成 \(n^k\),显然是 \(k\) 次的 .
然而众所周知差分一次次数减一,于是 \(S_k\) 是 \(k+1\) 次的 .
暴力算出前 \(k\) 个点值然后插值即可,复杂度取决于你怎么插值 .
系数咋求:
- 快速插值 \(O(n\log^2n)\) .
- 下降幂多项式形式(斯特林数相关)\(O(n\log n)\) .
- 普通多项式形式(伯努利数相关)\(O(n\log n)\) .
下面说后面两个 .
第二类斯特林数
普通幂转下降幂:
\[\boxed{n^k=\sum_{i=0}^k{k\brace i}n^{\underline i}} \]证明:考虑组合意义即可,LHS 是子集数,RHS 相当于枚举非空子集数然后算贡献 .
根据小学生就会的裂项,我们可以算出下降幂和:
\[\begin{aligned}S_{\underline k}(n)&=\sum_{i=0}^kn^{\underline i}\\&=\dfrac1{k+1}\sum_{i=0}^n((i+1)^{\underline{k+1}}-i^{\underline{k+1}})\\&=\dfrac1{k+1}(n+1)^{\underline{k+1}}\end{aligned} \]然后把两个式子结合到一起,就变成
\[\boxed{S_k(n)=\sum_{i=0}^k\dfrac1{i+1}{k\brace i}(n+1)^{\underline{k+1}}} \]第二类斯特林数求一行可以 \(O(n\log n)\) .
这个方法如果 \(n\) 是合数,那么下降幂和 \(\dfrac1{i+1}\) 显然可以约分(根据抽屉原理),然后就不需要任何逆元操作了 .
伯努利数
一篇奥妙重重的博客 link,看起来很牛逼,然而我并不懂 .
以下可能比较清晰 .
为了后面写着方便,把 \(n\) 自减,即定义 \(\displaystyle S'_k(n)=\sum_{i=0}^{n-1}i^k\) .
众所周知伯努利数的 EGF 为
\[\operatorname B(n)=\dfrac{x}{\exp(x)-1} \]然后我们拿出 \(S'_k\) 的 EGF:
\[\begin{aligned}\sum_{k\ge 0}\dfrac{x^k}{k!}S'_k(n)&=\sum_{k\ge 0}\dfrac{x^k}{k!}\sum_{i=1}^{n-1}i^k\\&=\sum_{i=1}^{n-1}\sum_{k\ge 0}\dfrac{i^kx^k}{k!}\\&=\sum_{i=1}^{n-1}\exp(xi)\\&=\dfrac{\exp(nx)-1}{\exp(x)-1}\end{aligned} \]然后发现这个 EGF 和伯努利数 EGF 挺像,于是改一下形式:
\[\dfrac{\exp(nx)-1}{\exp(x)-1}=\dfrac{x}{\exp(x-1)}\cdot\dfrac{\exp(nx)-1}{x} \]然后我们就可以拆成一个伯努利数 EGF 乘一个指数的 EGF .
提取系数:
\[\begin{aligned}\left[\dfrac{x^k}{k!}\right]\sum_{k\ge 0}\dfrac{x^k}{k!}S'_k(n)&=\left[\dfrac{x^k}{k!}\right]\left(\left(\sum_{k\ge 0}\dfrac{x^k}{k!}B_k\right)\left(\sum_{k\ge 0}\dfrac{x^k}{k!}n^{k+1}\right)\right)\\&=k!\sum_{i=0}^k\dfrac{B_i}{i!}\cdot\dfrac{n^{k+1-i}}{(k+1-i)!}\\&=\dfrac1{k+1}\sum_{i=0}^k\dbinom{k+1}iB_in^{k+1-i}\\&=\dfrac1{k+1}\sum_{i=1}^{k+1}\dbinom{k+1}{i}B_{k+1-i}n^i\end{aligned} \]即
\[\boxed{S'_k(n)=\dfrac1{k+1}\sum_{i=1}^{k+1}\dbinom{k+1}{i}B_{k+1-i}n^i} \]如果转成一般用的 \(S_k\),柿子的形式可以看 here .
标签:dbinom,dfrac,sum,自然数,dfrac1,exp,EGF 来源: https://www.cnblogs.com/CDOI-24374/p/16080401.html