自然数幂求和——第二类Strling数
这个问题似乎有很多种求法,但感觉上第二类Strling数的做法是最方便的。
问题
求下面这个式子:
∑i=0nik\sum_{i=0}^n i^ki=0∑nik
nnn的范围可以很大。
第二类Strling数
第二类Strling数记作S(n,m)S(n,m)S(n,m)、SnmS_n^mSnm。
定义:将nnn个相同的球放在mmm个不同的箱子里的方案数(其中的每一个箱子至少有一个球)。
很容易推出一个式子:Snm=Sn−1m−1+mSn−1mS_n^m=S_{n-1}^{m-1}+mS_{n-1}^mSnm=Sn−1m−1+mSn−1m。不解释。
有个通项公式,但是我不会推……不过在处理这个问题的时候用不着。
一个性质
ak=∑i=0kSkii!Caia^k=\sum_{i=0}^kS_k^i i! C_a^iak=i=0∑kSkii!Cai
如果直接理性地证明可能不容易,所以在这里通过它的定义来推理一下:
对于等式左边,相当于kkk个不同的球放在aaa个不同的箱子里。
对于等式右边,先枚举非空箱子的个数,SkiS_k^iSki表示kkk个不同的球放在iii个相同的箱子里。乘上i!i!i!相当于放在不同的箱子里,再乘上非空箱子的选法CaiC_a^iCai。
当然这条式子也可以化成:
∑i=0kSki∏j=a−i+1aj\sum_{i=0}^kS_k^i \prod_{j=a-i+1}^a ji=0∑kSkij=a−i+1∏aj
推理
先把结论放在前面:
∑i=0nik=∑i=0kSki∏j=n−i+1n+1ji+1\sum_{i=0}^n i^k=\sum_{i=0}^k\frac{S_k^i\prod_{j=n-i+1}^{n+1}j}{i+1}i=0∑nik=i=0∑ki+1Ski∏j=n−i+1n+1j
证明如下:
∑i=0nik=∑a=0n∑i=0kSkii!Cai=∑i=0kSkii!∑a=0nCai\sum_{i=0}^n i^k \\
=\sum_{a=0}^n\sum_{i=0}^kS_k^i i! C_a^i \\
=\sum_{i=0}^kS_k^i i!\sum_{a=0}^nC_a^i i=0∑nik=a=0∑ni=0∑kSkii!Cai=i=0∑kSkii!a=0∑nCai
因为a<ia<ia<i时Cai=0C_a^i=0Cai=0,所以
=∑i=0kSkii!∑a=inCai=\sum_{i=0}^kS_k^i i!\sum_{a=i}^nC_a^i=i=0∑kSkii!a=i∑nCai
由Cmn=Cm−1n−1+Cm−1nC_m^n =C_{m-1}^{n-1}+C_{m-1}^nCmn=Cm−1n−1+Cm−1n得
∑a=inCai=Cii+Ci+1i+⋯+Cni=Cii+1+Cii+Ci+1i+⋯+Cni=Ci+1i+1+Ci+1i+⋯+Cni⋯=Cn+1i+1\sum_{a=i}^nC_a^i=C_i^i+C_{i+1}^i+\cdots +C_n^i \\
=C_i^{i+1}+C_i^i+C_{i+1}^i+\cdots +C_n^i \\
=C_{i+1}^{i+1}+C_{i+1}^i+\cdots +C_n^i \\
\cdots \\
=C_{n+1}^{i+1}
a=i∑nCai=Cii+Ci+1i+⋯+Cni=Cii+1+Cii+Ci+1i+⋯+Cni=Ci+1i+1+Ci+1i+⋯+Cni⋯=Cn+1i+1
所以原式又可以化成下面这样:
=∑i=0kSkii!Cn+1i+1=∑i=0kSki∏j=n−i+1n+1ji+1=\sum_{i=0}^kS_k^i i!C_{n+1}^{i+1} \\
=\sum_{i=0}^k\frac{S_k^i\prod_{j=n-i+1}^{n+1}j}{i+1}=i=0∑kSkii!Cn+1i+1=i=0∑ki+1Ski∏j=n−i+1n+1j
这样式子就推完了。
自然数幂求和——第二类Strling数的更多相关文章
- HDU 4045 Machine scheduling --第二类Strling数
题意: n个数(1~n)取出r个数,取出的数相差要>=k, 然后分成m个可空组,问有多少种情况. 解法: 先看从n个数中取r个相差>=k的数的方法数,可以发现 dp[i][j] = dp[ ...
- 自然数幂和——第一类Stirling数和第二类Stirling数
第一类Stirling数 首先设 $$S_k(n)=\sum_{i=0}^ni^k$$ 根据第一类斯特林数的定义(P是排列数,C是组合数,s是Stirling) $$C_n^k={P_n^k\over ...
- Codeforces 622F The Sum of the k-th Powers ( 自然数幂和、拉格朗日插值法 )
题目链接 题意 : 就是让你求个自然数幂和.最高次可达 1e6 .求和上限是 1e9 分析 : 题目给出了最高次 k = 1.2.3 时候的自然数幂和求和公式 可以发现求和公式的最高次都是 k+1 ...
- 第二类Stirling数
第二类斯特林数 第二类Stirling数:S2(p, k) 1.组合意义:第二类Stirling数计数的是把p个互异元素划分为k个非空集合的方法数 2.递推公式: S2(0, 0) = 1 S2(p, ...
- [BZOJ5093]图的价值(NTT+第二类Stirling数)
5093: [Lydsy1711月赛]图的价值 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 250 Solved: 130[Submit][Sta ...
- 自然数幂和&伯努利数(Bernoulli)
二项式定理求自然数幂和 由二项式定理展开得 \[ (n+1)^{k+1}-n^{k+1}=\binom {k+1}1n^k+\binom {k+1}2n^{k-1}+\cdots+\binom {k+ ...
- UVA766 Sum of powers(1到n的自然数幂和 伯努利数)
自然数幂和: (1) 伯努利数的递推式: B0 = 1 (要满足(1)式,求出Bn后将B1改为1 /2) 参考:https://en.wikipedia.org/wiki/Bernoulli_numb ...
- lightOJ 1326 Race(第二类Stirling数)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1326 题意:有n匹马赛跑.问有多少种不同的排名结果.可以有多匹马的排名相同. 思路:排 ...
- [总结] 第二类Stirling数
上一道例题 我们来介绍第二类Stirling数 定义 第二类Stirling数实际上是集合的一个拆分,表示将n个不同的元素拆分成m个集合的方案数,记为 或者 .和第一类Stirling数不同的是,集合 ...
随机推荐
- faster-rcnn代码阅读-rpn-data层
这一节讲述rpn-data层,和这一层有关的结构图如下: rpn-data层的prototxt定义如下: layer { name: 'rpn-data' type: 'Python' bottom: ...
- java排序算法之冒泡排序和快速排序
总结一下Java排序算法,以便记忆. 各类排序的时间复杂度: 排序方法 时间复杂度(平均) 时间复杂度(最坏) 时间复杂度(最好) 空间复杂度 稳定性 复杂性 直接插入排序 O(n2)O(n2) O( ...
- 3步永久性激活IntelliJ IDEA 亲测有效
1.进到文件夹中:C:\Windows\System32\drivers\etc ,找到hosts文件,用文本编辑器打开文件,将“ 0.0.0.0 account.jetbrains.com ”添加 ...
- XStream入门应用程序
在进入XStream库的细节之前,让我们来看看应用程序操作.在这个例子中,我们创建Student和Address类.还将创建一个Student对象,然后将其序列化到一个XML字符串.然后反序列化的同一 ...
- javascript es6 语法快速入门
1. let.const 作用:let 声明变量,const 声明常量 与 var 的区别:不能重复声明,且存在块级作用域,即只在代码块内生效 2. 箭头函数 使用: let show = funct ...
- adb shell 查看内存信息
1.根据包名来查看指定的APP指定数据adb shell "top | grep com.xxx.xxx" 由于这样打印出来的数据没有参数名,可以参考这个命令来看:adb shel ...
- uoj118 【UR #8】赴京赶考
题目 不难发现我们直接走过去就行了 考虑到第\(i\)行的构造方法就是把\(b\)数组作为模板,每个数和\(a_i\)异或一下就可以了 于是不难发现对于一段连续相等的\(a\),它们在矩阵上就形成了完 ...
- python包的安装
Microsoft Windows [版本 10.0.17134.228] (c) 2018 Microsoft Corporation.保留所有权利. C:\Users\Administrator& ...
- JS,JQuery,获得选中的Radio值
1.HTML代码 <input type=" checked="checked" /><label for="a1">男< ...
- ES5给object扩展的一些静态方法
1. Object.create(prototype[, descriptors]) : 创建一个新的对象 1). 以指定对象为原型创建新的对象 2). 指定新的属性, 并对属性进行描述 value ...