自然数幂求和——第二类Strling数】的更多相关文章

这个问题似乎有很多种求法,但感觉上第二类Strling数的做法是最方便的. 问题 求下面这个式子: ∑i=0nik\sum_{i=0}^n i^ki=0∑n​ik 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~n)取出r个数,取出的数相差要>=k, 然后分成m个可空组,问有多少种情况. 解法: 先看从n个数中取r个相差>=k的数的方法数,可以发现 dp[i][j] = dp[1][j-1] + dp[2][j-1] + ... + dp[i-k][j-1],(dp[i][1] = i)  即维护一个前缀和即可,可以在O(r*n)内得出. 然后n个不同的数分成m个可以空的组,即为第二类Strling数的和 : S[n][1] + S[n][2] + ... + S[n][m]. S…
第一类Stirling数 首先设 $$S_k(n)=\sum_{i=0}^ni^k$$ 根据第一类斯特林数的定义(P是排列数,C是组合数,s是Stirling) $$C_n^k={P_n^k\over k!}={\sum_{i=0}^k(-1)^{i+k}s(k,i)n^i\over k!}$$ 变形得 $$ n^k ={\sum_{i=0}^{k-1}(-1)^{i+k}s(k,i)n^i}-k! C_n^k$$ $n$ 从1取到n累加, $$S_k(n)=\sum_{j=0}^n(k!C_j…
题目链接 题意 : 就是让你求个自然数幂和.最高次可达 1e6 .求和上限是 1e9 分析 :  题目给出了最高次 k = 1.2.3 时候的自然数幂和求和公式 可以发现求和公式的最高次都是 k+1 那么大胆猜测幂为 k 的自然数幂和肯定可以由一个最高次为 k+1 的多项式表示 不会证明,事实也的确如此 此时就变成了一个拉格朗日插值的模板题了 只要先算出 k+2 个值.然后就能确定最高次为 k+1 的多项式 套模板求值即可 当然自然数幂和不止这一种做法.例如伯努利数.斯特林数等 详细可参考 ==…
第二类斯特林数 第二类Stirling数:S2(p, k) 1.组合意义:第二类Stirling数计数的是把p个互异元素划分为k个非空集合的方法数 2.递推公式: S2(0, 0) = 1 S2(p, 0) = 0 ( p >= 1)  显然p >= 1时这种方法不存在 S2(p, p) = 1  显然这时每个元素看为一个集合 S2(p, k) = k * S2(p - 1, k) + S2(p - 1, k - 1) 考虑将1,2,3,...,p划分为k个非空集合,考虑p ⑴将p单独划分为一…
5093: [Lydsy1711月赛]图的价值 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 250  Solved: 130[Submit][Status][Discuss] Description “简单无向图”是指无重边.无自环的无向图(不一定连通). 一个带标号的图的价值定义为每个点度数的k次方的和. 给定n和k,请计算所有n个点的带标号的简单无向图的价值之和. 因为答案很大,请对998244353取模输出. Input 第一行包含两个正…
二项式定理求自然数幂和 由二项式定理展开得 \[ (n+1)^{k+1}-n^{k+1}=\binom {k+1}1n^k+\binom {k+1}2n^{k-1}+\cdots+\binom {k+1}kn+1 \] 那么,对于所有的\(n=1,2,3,\cdots\)累加得到 \[ (n+1)^{k+1}-1=\binom{k+1}1\sum_{i=1}^ni^k+\binom{k+1}2\sum_{i=1}^ni^{k-1}+\cdots+\binom {k+1}k\sum_{i=1}^n…
自然数幂和: (1) 伯努利数的递推式: B0 = 1 (要满足(1)式,求出Bn后将B1改为1 /2) 参考:https://en.wikipedia.org/wiki/Bernoulli_number http://blog.csdn.net/acdreamers/article/details/38929067 使用分数类,代入求解 #include<cstdio> #include<iostream> #include<cstdlib> #include<…
题目链接:http://lightoj.com/volume_showproblem.php?problem=1326 题意:有n匹马赛跑.问有多少种不同的排名结果.可以有多匹马的排名相同. 思路:排名相同的算作一组,那么最后的排名有1.2……n组,都有可能.那么对于有m组的,首先我们需要计算出n匹马分成m组有多少种分法,这就是第二类Stirling数,设为S(n,m),设a[m]表示m!,那么最后答案就是ans=sum(S(n,i)*a[i])(1<=i<=n). 第二类Stirling数:…
上一道例题 我们来介绍第二类Stirling数 定义 第二类Stirling数实际上是集合的一个拆分,表示将n个不同的元素拆分成m个集合的方案数,记为 或者 .和第一类Stirling数不同的是,集合内是不考虑次序的,而圆排列是有序的.常常用于解决组合数学中几类放球模型.描述为:将n个不同的球放入m个无差别的盒子中,要求盒子非空,有几种方案? 第二类Stirling数要求盒子是无区别的,所以可以得到其方案数公式: 递推式 第二类Stirling数的推导和第一类Stirling数类似,可以从定义出…
[题意]给定k<=123,a,n,d<=10^9,求: $$f(n)=\sum_{i=0}^{n}\sum_{j=1}^{a+id}\sum_{x=1}^{j}x^k$$ [算法]拉格朗日插值 [题解]参考:拉格朗日插值法及应用 by DZYO 虽然式子很复杂,但一点一点化简有条理的化简后就可以做了. 首先最后是一个自然数幂和: $$\sum_{x=1}^{j}x^k$$ 这是一个k+1次多项式,可以理解为k+一个Σ(一般一个Σ增加一次项). 然后会发现最后部分和第二部分之间不需要插值,因为第…
简单的模板题. 题意:问n匹马出现的不同排名数. 题解:可以使用DP,本质上还是第二类Stirling数(隔板法) #include <stdio.h> #include <iostream> #include <string.h> #include <algorithm> #include <utility> #include <vector> #include <map> #include <set> #i…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2643 题意: 有n个个选手参赛,问排名有多少种情况(可以并列). 题解: 简化问题: 将n个不同的元素放到i个有差别的盒子中,情况数为P(n,i),求∑P(n,i) (1<=i<=n) 再简化: 将n个不同的元素放到i个无差别的盒子中,情况数为S(n,i),求∑( S(n,i)*i! ) (1<=i<=n) 哇这是第二类Stirling数 ( ̄▽ ̄)~* 递推式:s(n,k) = s(…
上午noi.ac崩崩崩了,栽在组合数学上,虽说最后在辰哥&Chemist的指导下A掉了此题,也发现自己组合数学太弱了qwq. 在luogu上找题,结果找到了一个第二类斯特林数的题(还是双倍经验,逃.) 一.什么是第二类Stirling数 第二类斯特林数 S(n,k):把 n 个元素划分成 k 个集合的方案数.  这个问题说的实际一点,就比如说,有n个互异的小球,把他们放入m个盒子里,盒子里不允许为空的方案数.我们设s(i,j)表示放到i个小球,j个盒子的方案数. 那么对于每个小球,当前我们有两种…
一.第二类Stirling数 定理:第二类Stirling数S(p,k)计数的是把p元素集合划分到k个不可区分的盒子里且没有空盒子的划分个数. 证明:元素在哪些盒子并不重要,唯一重要的是各个盒子里装的是什么,而不管哪个盒子装了什么. 递推公式有:S(p,p)=1 (p>=0)         S(p,0)=0  (p>=1)         S(p,k)=k*S(p-1,k)+S(p-1,k-1)   (1<=k<=p-1) .考虑将前p个正整数,1,2,.....p的集合作为要被…
做了老是忘…… 实际问题: 找维基百科.百度百科…… 第一类Stirling数 n个元素构成m个圆排列 S(n,m)=S(n-1,m-1)+(n-1)*S(n-1,m) 初始 S(0,0)=1 S(n,0)=0(n<>0) 第n个元素: 1.形成一个新的环 原来n-1个元素,m-1个环 2.加入原来的任意一个环,插入到原来其中一个数(n-1个)的左/右边 原来n-1个元素,m个环 第二类Stirling数 n个元素分成m个集合 S(n,m)=S(n-1,m-1)+m*S(n-1,m) 初始 S…
https://vjudge.net/problem/51Nod-1228 Description T(n) = n^k,S(n) = T(1) + T(2) + ...... T(n).给出n和k,求S(n). 例如k = 2,n = 5,S(n) = 1^2 + 2^2 + 3^2 + 4^2 + 5^2 = 55. 由于结果很大,输出S(n) Mod 1000000007的结果即可. Input 第1行:一个数T,表示后面用作输入测试的数的数量.(1 <= T <= 5000) 第2 -…
与UVA766 Sum of powers类似,见http://www.cnblogs.com/IMGavin/p/5948824.html 由于结果对MOD取模,使用逆元 #include<cstdio> #include<iostream> #include<cstdlib> #include<cstring> #include<string> #include<algorithm> #include<map> #in…
伯努利数法 伯努利数原本就是处理等幂和的问题,可以推出 $$ \sum_{i=1}^{n}i^k={1\over{k+1}}\sum_{i=1}^{k+1}C_{k+1}^i*B_{k+1-i}*(n+1)^i $$ 因为 $$\sum_{k=0}^nC_{n+1}^kB_k=0(B_0=1)$$ 所以 $$ B_n={- {1\over{n+1}}}(C_{n+1}^0B_0+C_{n+1}^1B_1+……C_{n+1}^{n-1}B_{n-1})$$ 伯努利数的证明十分复杂,记住即可. 题目…
题意 求 $ \displaystyle \sum_{i=1}^n i^k \ mod (1e9+7), n \leq 10^9, k \leq 10^6$. CF622F 分析 易知答案是一个 $k+1$ 次多项式,我们找 $k+2$ 个值代进去,然后拉格朗日插值. $n+1$ 组点值对 $(x_i, y_i)$,得到 $n$ 次多项式 $f$ 的拉格朗日插值公式为: $$f(x) = \sum_{i = 0}^n y_i\prod_{j\not =i} \frac{x-x_j}{x_i-x_…
\(i^2\)求和 老祖宗告诉我们\(\sum_{i=1}^n i^2 = \frac{n(n+1)(2n+1)}{6}\) 但是这玩意儿是怎么出来的呢?感觉网上用立方差证明的思路太low了,今天偶然间在Miskcoo大佬的博客中看到了一种脑洞清奇通俗易懂的证明方法 我们要求的是\(S_n = \sum_{i=1}^n i^2\),现在我们对\(C_n = \sum_{i=1}^n i^3\)来进行"扰动". 首先列一个恒等式 \[\sum_{i=1}^{n+1} i^3 = C_n…
题目 [HEOI2016/TJOI2016]求和 关于斯特林数与反演的更多姿势\(\Longrightarrow\)点这里 做法 \[\begin{aligned}\\ Ans&=\sum\limits_{i=0}^n \sum\limits_{j=0}^i \begin{Bmatrix}i\\j\end{Bmatrix}2^j×j!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1\\ &=\sum\limits_{i=0}^n \sum\l…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4555 关于第二类斯特林数:https://www.cnblogs.com/Wuweizheng/p/8638858.html 关于这道题:https://blog.csdn.net/werkeytom_ftd/article/details/51909966 把 ∑i 移到后面那一步很不错,在后面就是个等比数列求和,就消去一个 O(n) 了: 注意等比数列求和公式当 q=1 时不适用. 代…
题目大意:$n$ 个点的完全图,点 $i$ 和点 $j$ 的边权为 $(i+j)^k$.随机一个生成树,问这个生成树边权和的期望对 $998244353$ 取模的值. 对于P5437:$1\le n\le 998244352,1\le k\le 10^7$. 对于P5442:$1\le n\le 10^4,\le k\le 10^7$. 其实也是一道比较简单的题.(所以就应该把这题和上一道原题调个位置) 考虑一条边在生成树中出现的概率,由于一共有 $\dfrac{n(n-1)}{2}$ 条边,一…
题目链接 \(Description\) 求 \[\sum_{i=0}^n\sum_{j=0}^iS(i,j)2^jj!\]对998244353取模后的结果. \(n<=10^5\) \(Solution\) \(S(i,j)\)在这里就非常碍事,怎么把它写成一个多项式的形式呢? 第二类斯特林数还有一种容斥的写法 \[S(n,m)=\frac{1}{m!}\sum_{i=0}^m(-1)^iC_m^i(m-i)^n\] 把它带到要求的式子里去 \[\sum_{i=0}^n\sum_{j=0}^i…
题目链接 (luogu) https://www.luogu.org/problem/P4091 (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=4555 题解 终于不是神仙题了啊... 首先\(O(n\log n)\)的FFT做法非常明显,直接用容斥展开,这里不再赘述了.发现最后就是要求一个\(\sum^{n}_{k=0}\sum^{n}_{j=k}(-1)^{j-k}{j\choose k}2^j(\sum^{n}_{i=0}k…
这个题目确实是很简单的一个矩阵快速幂,但是我在求和的时候,用的是标准的求和,即,一共计算logN次Ak,但是这样会超时. 后来就发现原来本身和Sn=Sn-1+Fn:即Sn本身可以写在矩阵当中,所以直接求一次 Ak就能得出结果. #include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> using namespace st…
题解: 很多方法 斯特林数推导略麻烦但是不依赖于模数 代码: 拉格朗日插值 由于可以证明这是个K+1次多项式于是可以直接用插值 #include <bits/stdc++.h> using namespace std; ; #define IL inline #define ll long long #define rint register int #define rep(i,h,t) for (rint i=h;i<=t;i++) #define dep(i,t,h) for (ri…
给你斯特林数就换成通项公式,给你k次方就换成斯特林数 考虑换成通项公式之后,组合数没有什么好的处理方法 直接拆开,消一消阶乘 然后就发现了(j-k)和k! 往NTT方向靠拢 然后大功告成 其实只要想到把斯特林公式换成通项公式,考虑用NTT优化掉(j-k)^i 后面都是套路了. #include<bits/stdc++.h> #define reg register int #define il inline #define numb (ch^'0') #define int long long…
如果K>n,就无解: 如果K==n,就答案是P(n,n): 如果K<n,答案就是s(n,K)*P(K,K): P为排列数,s为第二类斯特林数. 第二类斯特林数就是将n个球,划分为K个非空集合的方案数(无序),所以要再乘上集合数的全排列. #include<cstdio> using namespace std; typedef long long ll; #define MOD 1000000007ll int T,n,K; ll f[1010][1010],jc[1000010]…