自然数幂和 拉格朗日插值法和第二类斯特林数法

78 篇文章 0 订阅
44 篇文章 0 订阅

写在这里,目的是在以后需要看的时候不用再去网上抄(划掉)
求 s ( n ) = ∑ i = 1 n i k 求s(n)=\sum_{i=1}^n i^k s(n)=i=1nik

拉格朗日插值法

给定若干个点值,(x0,y0),(x1,y1),(xn,yn),它们的差值多项式
L ( x ) = ∑ i = 0 n y i ∗ ∏ j ≠ i x − x j x i − x j L(x)=\sum_{i=0}^nyi*\prod_{j\neq i}{x-xj\over xi-xj} L(x)=i=0nyij̸=ixixjxxj
听说自然数幂和可以表示为k+1次多项式函数。
求自然数幂和的时候,就直接取点值为(0,s(0)),(1,s(1)),(k+1,s(k+1))
于是
L ( n ) = ∑ i = 0 k + 1 s ( i ) ∗ ∏ j ≠ i n − j i − j L(n)=\sum_{i=0}^{k+1}s(i)*\prod_{j\neq i}{n-j\over i-j} L(n)=i=0k+1s(i)j̸=iijnj
L ( n ) = ∑ i = 0 k + 1 s ( i ) ∗ ( − 1 ) k + 1 − i n ( n − 1 ) . . . ( n − i + 1 ) ( n − i − 1 ) . . . ( n − k − 1 ) i ! ( k + 1 − i ) ! L(n)=\sum_{i=0}^{k+1}s(i)*(-1)^{k+1-i}{n(n-1)...(n-i+1)(n-i-1)...(n-k-1)\over i!(k+1-i)!} L(n)=i=0k+1s(i)(1)k+1ii!(k+1i)!n(n1)...(ni+1)(ni1)...(nk1)
预处理k以内的自然数幂和,求个逆元就好了。
复杂度 O ( k ) O(k) O(k)

第二类斯特林数法

但是如果不能求逆元
有第二类斯特林数 { n k } \left\{ ^k_n \right\} {nk}为将k个无区别的球放入n个有区别的非空盒子的方案数
所以 k 2 k^2 k2转移显然:
{ n k } = { n − 1 k − 1 } + n { n k − 1 } \left\{ ^k_n \right\}=\left\{ ^{k-1}_{n-1} \right\}+n\left\{ ^{k-1}_{ n} \right\} {nk}={n1k1}+n{nk1}
已知 n k = ∑ i = 0 k { i k } ∗ n i ‾ n^k=\sum_{i=0}^k \left\{ ^k_i \right\}*n^{\underline i} nk=i=0k{ik}ni
可以用组合意义理解:
左边是k个无区别的球随意放入n个有区别盒子,右边为枚举放入了几个盒子,用斯特林数算出放球的方案,下降幂为选盒子。
那么
∑ i = 1 n i k = ∑ j = 1 n ∑ i = 0 k { i k } ∗ j i ‾ \sum_{i=1}^n i^k=\sum_{j=1}^n\sum_{i=0}^k \left\{ ^k_i \right\}*j^{\underline i} i=1nik=j=1ni=0k{ik}ji
= ∑ i = 0 k { i k } ∑ j = 1 n j i ‾ =\sum_{i=0}^k \left\{ ^k_i \right\}\sum_{j=1}^nj^{\underline i} =i=0k{ik}j=1nji
= ∑ i = 0 k { i k } i ! ∑ j = 1 n C j i =\sum_{i=0}^k \left\{ ^k_i \right\}i!\sum_{j=1}^nC_j^i =i=0k{ik}i!j=1nCji
= ∑ i = 0 k { i k } i ! C n + 1 i + 1 =\sum_{i=0}^k \left\{ ^k_i \right\}i!C_{n+1}^{i+1} =i=0k{ik}i!Cn+1i+1
这样的话就不用逆元了,复杂度是 O ( k 2 ) O(k^2) O(k2)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值