伯努利数
- 【百度百科:里面有很多应用】
定义与公式
我们常用BiB_iBi定义第iii个伯努利数。
生成函数定义方式:
zez−1=∑n=0∞Bnznn! \frac{z}{e^z-1}=\sum\limits_{n=0}^\infty B_n\frac{z^n}{n!} ez−1z=n=0∑∞Bnn!zn
这里的z∈Cz\in Cz∈C(CCC为复数域)
由于伯努利数是指数型函数的母函数,所以我们对exe^xex进行泰勒展开即可得到。
前999项伯努利数:
B0=1 B1=−12 B2=16 B3=0 B4=−130B5=0 B6=142 B7=0 B8=−130 B9=0 B_0=1\ \ \ B_1=-\frac{1}{2}\ \ \ B_2=\frac{1}{6}\ \ \ B_3=0\ \ \ B_4=-\frac{1}{30} \\ B_5=0\ \ \ B_6=\frac{1}{42}\ \ \ B_7=0\ \ \ B_8=-\frac{1}{30}\ \ \ B_9=0 B0=1 B1=−21 B2=61 B3=0 B4=−301B5=0 B6=421 B7=0 B8=−301 B9=0
我们不难发现对于BnB_nBn,当BnB_nBn为奇数且不为111时,Bn=0B_n=0Bn=0
其中有些时候定义B1=12B_1=\frac{1}{2}B1=21,那么对应的生成函数只需改为zezez−1\frac{ze^z}{e^z-1}ez−1zez即可。
递归定义方式:
Bn=[m=0]−∑k=0m−1(mk)Bkm−k+1 B_n=[m=0]-\sum\limits_{k=0}^{m-1}\tbinom{m}{k}\frac{B_k}{m-k+1} Bn=[m=0]−k=0∑m−1(km)m−k+1Bk
边界为B0=1B_0=1B0=1,[m=0][m=0][m=0]表示当m=0m=0m=0时为111,否则为000。
简单应用
- 自然数幂的前缀和
∑i=1nik=1k+1∑i=1k+1Ck+1iBk+1−i(n+1)i \sum_{i=1}^ni^k=\frac{1}{k+1}\sum_{i=1}^{k+1}C_{k+1}^iB_{k+1-i}(n+1)^i i=1∑nik=k+11i=1∑k+1Ck+1iBk+1−i(n+1)i
- 特殊的公式
∑k=0nCn+1kBk=0 \sum_{k=0}^{n}C_{n+1}^kB_k=0 k=0∑nCn+1kBk=0
Bn=−1n+1(Cn+10B0+Cn+11+⋯+Cn+1n−1Bn−1) B_n=-\frac{1}{n+1}(C_{n+1}^0B_0+C_{n+1}^{1}+\cdots +C_{n+1}^{n-1}B_{n-1}) Bn=−n+11(Cn+10B0+Cn+11+⋯+Cn+1n−1Bn−1)
我们将生成函数的公式继续变形得到:
=z∑i=1∞zii!=1∑i=0∞zi(i+1)! =\frac{z}{\sum_{i=1}^{\infty}\frac{z^i}{i!}} \\ =\frac{1}{\sum_{i=0}^{\infty}\frac{z^i}{(i+1)!}} =∑i=1∞i!ziz=∑i=0∞(i+1)!zi1
最后就变成了多项式∑i=0∞zi(i+1)!\sum_{i=0}^{\infty}\frac{z^i}{(i+1)!}∑i=0∞(i+1)!zi的逆元了,用多项式求逆(NTT)即可在O(nlogn)O(nlogn)O(nlogn)的时间内预处理前nnn项。
参考:
-
【Picks的blogOrz%%%%】
-
【好的博客:Orz%%%】
-
【BLOG】
-
【BLOG】
-
【BLOG】