又要开新坑了,这可是个庞大工程。不定期更新!!!
Definition: Stirling number of the second kind is the number of ways to partition a set of n objects into k non-empty subsets and is denoted by S(n,k)
S(n,k)=S(n?1,k?1)+kS(n?1,k)n≥k≥1
S(0,0)=1S(n,0)=S(0,k)=0
Generating functions:
#include <stdio.h>
#include <algorithm>
using namespace std;
const int prime = 1000000007;
int main() {int n, k;scanf_s("%d%d", &n, &k);int *S = new int[n + 2];//Stirling S(n,k)->S(k)//S(n, k) = S(n - 1, k - 1) + k * S(n - 1, k);S[0] = 0; S[1] = 1;//n=1for (int i = 2; i <= n; ++i) {S[i] = 0;int sj_pre = S[0], sj = S[1];for (int j = 1; j <= i; ++j) {S[j] = sj_pre + j*sj;sj_pre = sj;sj = S[j + 1];}}for (int i = 0; i <= n; ++i)printf("%d ", S[i]);system("pause");return 0;
}