利用第一类斯特林的通项公式求解
S
(
n
,
k
)
=
S
(
n
−
1
,
k
−
1
)
+
S
(
n
−
1
,
k
)
∗
k
S(n, k)=S(n-1, k-1)+S(n-1, k) * k
S(n,k)=S(n−1,k−1)+S(n−1,k)∗k
#include <stdio.h>
#include <iostream>
using namespace std;
#define P (1000000000+7)
long long b[1001];
long long s(int n , int m)
{
b[0]=1;
for(int i=1; i<=n; i++)
{
for(int j=i; j>=1; j--)
{
b[j]=((i-1)*b[j]+b[j-1])%P;
}
b[0] = 0;
}
return b[m];
}
int main()
{
int n, m;
scanf("%d%d", &n, &m);
printf("%lld\n",s(n,m) );
return 0;
}