自然数幂和多项式
听说一个人的数论要用伯努利数处理自然数幂和,然而我之前只会插值,吓得跑去学了一下自然数幂和 .
附录 — 前置知识
插值相关:看我的博客 link(旧文慎入) .
第二类斯特林数相关:
定义:第二类斯特林数 \(\displaystyle{n\brace k}\) 表示 \(n\) 个有标号小球放入 \(k\) 个无标号集合,每个集合都非空的方案数 .
然后根据组合意义(这个证明和二项式系数那个差不多),可以得到递推式:
然后这个可以 \(O(n^2)\) 递推 .
普通幂转下降幂(后面会说)
套二项式反演(你也可以看成套了一个容斥),然后变成
是不是卷积的形式 .
于是可以 \(O(n\log n)\) 卷积求一行 .
伯努利数相关:
伯努利数 \(\{B\}\) 是如下定义的有理数序列:
其中 \(B_0=1\) .
然后可以根据定义 \(O(n^2)\) 求 .
我们考虑整出它的 EGF .
显然式子是不是可以改成
做一些平凡的操作:
这就有点 EGF 的样子了,改成 EGF 的形式:
然后显然就有
于是可以一次求逆做到 \(O(n\log n)\) 求一行 求前 \(n\) 项 .
自然数幂和
(题目链接:CF622F)
求
做法
插值
差分一次变成 \(n^k\),显然是 \(k\) 次的 .
然而众所周知差分一次次数减一,于是 \(S_k\) 是 \(k+1\) 次的 .
暴力算出前 \(k\) 个点值然后插值即可,复杂度取决于你怎么插值 .
upd. \(O(1)\) 固定指数快速幂大家是不是都会啊,前面说的是求系数的复杂度,如果求单点当然是插值最快 .
How to solve it?
显然 \(f(n)=n^k\) 是完全积性函数 .
素数处暴力算,别的地方线性筛即可,代码特别好写 .
预处理 \(O(n)\),询问 \(O(1)\) .
系数咋求:
- 快速插值 \(O(n\log^2n)\) .
- 下降幂多项式形式(斯特林数相关)\(O(n\log n)\) .
- 普通多项式形式(伯努利数相关)\(O(n\log n)\) .
下面说后面两个 .
第二类斯特林数
普通幂转下降幂:
证明:考虑组合意义即可,LHS 是子集数,RHS 相当于枚举非空子集数然后算贡献 .
根据小学生就会的裂项,我们可以算出下降幂和:
然后把两个式子结合到一起,就变成
第二类斯特林数求一行可以 \(O(n\log n)\) .
这个方法如果 \(n\) 是合数,那么下降幂和 \(\dfrac1{i+1}\) 显然可以约分(根据抽屉原理),然后就不需要任何逆元操作了 .
伯努利数
!!!!!! 如果你不知道 EGF 是啥,有一个 归纳做法 .
一篇奥妙重重的博客 link,看起来很牛逼,然而我并不懂 .
以下可能比较清晰 .
为了后面写着方便,把 \(n\) 自减,即定义 \(\displaystyle S'_k(n)=\sum_{i=0}^{n-1}i^k\) .
众所周知伯努利数的 EGF 为
然后我们拿出 \(S'_k\) 的 EGF:
然后发现这个 EGF 和伯努利数 EGF 挺像,于是改一下形式:
然后我们就可以拆成一个伯努利数 EGF 乘一个指数的 EGF .
提取系数:
即
如果转成一般用的 \(S_k\),柿子的形式可以看 here .
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/16080401.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ