2018 UPD:
其实第二类斯特林数做自然数幂和更简单,这里简单写一下:
由一个基本式子出发
nk=∑i=0k{k i}[n]i
考虑对 n 求和
=∑j=0k{kj}∑i=0n[i]j
=∑j=0k{kj}j!∑i=0n(ij)
=∑j=0k{kj}j!(n+1j+1)
然后就没了, {kj}={k−1j−1}+j{k−1 j} 可以 O(k2) 递推,而且与下面第一类同理对模数没有要求
一年多前接触过这个东西,但是当时理解很浅,很快就忘了
今天Drin_E讲题的时候手推的,感觉很劲,浑然天成,逻辑性强,推理、转化自然,易理解
还是要mark一下的=w=
Description
求
Sn,k=∑i=0nik
Analysis
构造一个多项式
Pkx=x(x−1)...(x−k+1)
显然也可以写成如下形式,容易发现系数只与 k,i 有关,设为 Ssk,i
Pkx=∑i=1kxiSsk,i
考虑如何求出 Ssk,i ,为了使用归纳法,构造 Pk+1x ,观察其与 Pkx 各项系数的关系
Pk+1x=∑i=1k+1xiSsk+1,i=x(x−1)...(x−k)
=(x−k)Pkx=(x−k)∑i=1kxiSsk,i
=∑i=1kxi+1Ssk,i−kxiSsk,i
通过比较各项系数,可以发现
Ssk+1,i=Ssk,i−1−kSsk,i
于是 Ssk,i 可以 O(n2) 递推求出
实际上,这里的 Ss 表示带符号 第一类斯特林数,有实际意义
上面铺垫结束,为了靠拢所求式,单独分出 xk ,移项
xk=Pkx−∑i=1k−1xiSsk,i
靠拢所求式,两边求和
Sn,k=∑x=0nxk=k!∑x=0nCkx−∑x=0n∑i=1k−1xiSsk,i
=k!Ck+1n+1−∑i=1k−1Ssk,i∑x=0nxi
=Pk+1n+1k+1−∑i=1k−1Ssk,iSn,i
减号前面部分暴力做,分子为k+1个连续自然数相乘,其中一定有k+1这个因数,所以可以避免除法
Ss 可以预处理, S 递推,
再贴一些别人的其他方法
伯努利数_from_PhilipsWeng
WerkeyTom_FTD