第二类斯特林数与自然数幂和

本文介绍了一种使用第二类斯特林数求解自然数幂和的方法,这种方法的时间复杂度为O(k^2),适用于没有逆元的情况。通过数学推导展示了如何利用组合数学中的概念简化计算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般求法

一般求自然数幂和都会用到拉格朗日插值法,但仅当存在逆元的时候能用,给出一种用第二类斯特林数求自然数幂和的方法,时间复杂度是O(k2)O(k2)而不是O(k log k)O(k log k)的。

第二类斯特林数

众所周知,有

ik=j=0k{kj}ijik=∑j=0k{kj}ij_

于是乎我们有
F(n)=i=1nik=i=1nj=0k{kj}ijF(n)=∑i=1nik=∑i=1n∑j=0k{kj}ij_

F(n)=i=1nj=0k{kj}j!(ij)F(n)=∑i=1n∑j=0k{kj}j!(ij)

F(n)=j=0k{kj}j!i=jn(ij)F(n)=∑j=0k{kj}j!∑i=jn(ij)

我们又有

i=jn(ij)=(n+1j+1)∑i=jn(ij)=(n+1j+1)

证明可以考虑组合意义,把nn+1个数排成一排,考虑第一个选的数的位置,剩下的数中再选jj个,就能得到上面的式子。
当然也可以用(ij)=(i1j1)+(i1j)此式子依次展开上式即可。

接着式子就变成了

F(n)=j=0k{kj}j!(n+1j+1)F(n)=∑j=0k{kj}j!(n+1j+1)

F(n)=j=0k{kj}(n+1)j+1j+1F(n)=∑j=0k{kj}(n+1)j+1_j+1

很明显(n+1)j+1j+1(n+1)j+1_j+1一定是整数,因此就不需要逆元了,第二类斯特林数用O(k2)O(k2)计算出来,时间复杂度O(k2)O(k2)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值