.
生成函数B(z)=zez−1=∑Bnznn!B(z)=\frac{z}{e^z-1}=\sum B_n\frac{z^n}{n!}B(z)=ez−1z=∑Bnn!zn
递推式(n2n^2n2)
B0=1B_0=1B0=1Bn=−∑k=0n−1CnkBkn−k+1B_n=-\sum_{k=0}^{n-1}C_n^k\frac{B_k}{n-k+1}Bn=−k=0∑n−1Cnkn−k+1Bk
也可以写成这样∑k=0nCn+1kBk=0\sum_{k=0}^nC_{n+1}^kB_k=0k=0∑nCn+1kBk=0
和自然数幂和的关系
∑k=1nkp=∑j=0p(−1)jCp+1jBjnp+1−jp+1\sum_{k=1}^nk^p=\frac{\sum_{j=0}^p(-1)^jC_{p+1}^jB_jn^{p+1-j}}{p+1}k=1∑nkp=p+1∑j=0p(−1)jCp+1jBjnp+1−j
.
当然有的公式会把(−1)j(-1)^j(−1)j那一项去掉不过通常不会有问题,因为除了B1=−12B_1=-\frac{1}{2}B1=−21其余B2n+1=0B_{2n+1}=0B2n+1=0,反正注意判断一下就行了
一些其他的东西
已知nnn多项式上的n+1n+1n+1个点,那么我们可以得到这个多项式
F(z)=∑i=0nyi∏j≠i(z−xj)∏j≠i(xi−xj)F(z)=\sum_{i=0}^n\frac{y_i\prod_{j\neq i}(z-x_j)}{\prod_{j\neq i}(x_i-x_j)}F(z)=i=0∑n∏j̸=i(xi−xj)yi∏j̸=i(z−xj)
.
这个公式叫拉格朗日插值
其实本质就是构造而已,把这些点带入大概就知道这个式子怎么回事了
这个东西可以在O(k)O(k)O(k)时间复杂度求自然数幂和
首先用线性筛筛出000到kkk的k次方之和,这一步要O(k)O(k)O(k)复杂度
让后预处理出1−k1-k1−k的阶乘,将每个点(i,ik)(i,i^k)(i,ik)和z=nz=nz=n带入上面的式子就可以得到答案了
但是这个东西不能求出各项系数