下 Summer Pockets REFLECTION BLUE 的时候太无聊,于是就来学这个东西了。
伯努利数(Bernoulli number)是由雅各布·伯努利的名字命名的。
定义
我们定义伯努利数 Bn 是满足如下递归式 ∑ni=0(n+1i)Bi=[n=0] 的数列。
定义自然数幂和函数 S(n,k)=n−1∑i=0ik。
EGF
首先求出它的 EGF B(z)。定义式两边同加 Bn+1 得 n+1∑i=0(n+1i)Bi=[n=0]+Bn+1。
处理一下就是 n∑i=0(ni)Bi=[n=1]+Bn。
所以 B(z)ez=B(z)+z,即 B(z)=zez−1。
与自然数幂的转化
S(n,k)=n−1∑i=0ik=1k+1k∑i=0(k+1i)Bink−i+1
这玩意大概有两种常见证法。
利用归纳法证明
这个证明方法来自 Concrete Mathematics 6.5 BERNOULLI NUMBER。
S(n,k)+nk+1=n−1∑i=0(i+1)k+1=n−1∑i=0k+1∑j=0(k+1j)kj=k+1∑j=0(k+1j)S(n,j)
两边同时减去 S(n,k) 得
nk+1=k∑j=0(k+1j)S(n,j)
设 ˆS(n,k)=∑n−1i=0ik=1k+1∑ki=0(k+1i)Bink−i+1,且对于 j∈[0,k) 均有 S(n,j)=ˆS(n,j) 成立。则需证明 S(n,k)=ˆS(n,k)。
则此时 nk+1=∑k−1j=0(k+1j)ˆS(n,j)+S(n,k),故转化为证 nk+1=∑kj=0(k+1j)ˆS(n,j)。
k∑j=0(k+1j)ˆS(n,j)=k∑j=0(k+1j)1j+1j∑i=0(j+1i)Binj−i+1=k∑j=0(k+1j)1j+1j∑i=0(j+1i+1)Bj−ini+1=k∑j=0(k+1j)j∑i=0(ji)Bj−ini+1i+1=k∑i=0ni+1i+1k∑j=i(k+1j)(ji)Bj−i=k∑i=0ni+1i+1(k+1i)k∑j=i(k+1−ij−i)Bj−i=k∑i=0ni+1i+1(k+1i)k−i∑j=0(k+1−ij)Bj=k∑i=0ni+1i+1(k+1i)[i=k]=nk+1k+1(k+1k)=nk+1
其中倒数第二步用的是定义式。
利用指数生成函数证明
设 Fn(z)=∑k≥0S(n,k)k!zk。
Fn(z)=∑k≥0S(n,k)k!zk=n−1∑i=0∑k≥0ikzkk!=n−1∑i=0eiz=enz−1ez−1=zez−1⋅enz−1z=B(z)⋅enz−1z=(∑i≥0Bii!)(∑i≥0ni+1zi(i+1)!)
然后取一项就行了。
S(n,k)=k![zk]Fn(z)=m!k∑i=0Bii!⋅nk−i+1(k−i+1)!=1k+1k∑i=0(k+1i)Bink−i+1
例题
未特别说明时,模数均为998244353
。
「Luogu 3711」仓鼠的数学题
给数列 an,求 Ans(z)=n∑k=0(S(z,k)+zk)ak。n≤2.5×105。
n∑k=0akzk 是个常量可以先扔出来。
Ans(z)−n∑k=0akzk=n∑k=0S(z,k)ak=n∑k=0ak1k+1k∑i=0(k+1i)Bizk−i+1=n∑k=0akk!k∑i=0Bii!⋅zk+1−i(k+1−i)!=n∑k=0akk!k+1∑i=1Bk+1−i(k+1−i)!⋅zii!=n+1∑i=1zii!n∑k=i−1(akk!)Bk+1−i(k+1−i)!
后面那坨是个差卷积,于是翻转一下多项式做完了。
「HDU 6340」Delightful Formulas
给一个大数 n=m−1∏o=0pαoo 的分解和正整数 K,求 n∑i=1[gcd(i,n)=1]S(i,K)。
m≤20,K≤105,po,αo≤109。
首先来个莫比乌斯反演,Ans=∑d|nμ(d)n/d∑i=1S(i⋅d,K)。设 ai=1k+1(k+1j)Bk+1−j。
Ans=∑d|nμ(d)K+1∑j=1ajdjn/d∑i=1ij=∑d|nμ(d)K+1∑j=1ajdjj+1∑i=1(nd)i1j+1(j+1i)Bj+1−i
到这里,枚举 c=j−i+1∈[0,K+1]:
Ans=∑d|nμ(d)∑c=−1KdcK+1∑j=1ajnj−c1j+1(j+1c+1)Bc+1=K∑c=−1Bc+1K+1∑j=1ajj+1(j+1c+1)nj−c∑d|ndcμ(d)=K+1∑c=0BcK+1∑j=1ajj+1(j+1c)nj−c+1∑d|ndc−1μ(d)
发现 ∑d|ndcμ(d)=∏o=0(1−po),所以考虑 Fc=K+1∑j=1ajj+1(j+1c)nj−c+1,我们要对于 c∈[0,K+1] 全求出来。
Fc=K+1∑j=1ajj+1(j+1c)nj−c+1=1c!K+1∑j=1ajj!nj−c+1(j−c+1)!
又是差卷积,稍微算算发现 K−j+c∈[−K−1,K],所以设 bi=nK−i+2(K−i+2)!。
就变成求 Fc=K+1∑j=1ajj!bK+1−j+c。(这个 ai 其实拆开形式比较好)
于是做完了。记得乘上一堆麻烦的系数。