s(m,n)表示把m个有区别的球放到n个相同的盒子中,且无一空盒,其不同的方案数。
s(m,n)=ns(m-1,n)+s(m-1,n-1) (m>=n)
s(m,n)=0 (m<n)
s(0,0)=1;
long long data[N][N];
void stirling(int m, int n)
{
int min, i, j;
memset(data,0,sizeof(data));
data[0][0] = 1;
for( i = 1; i <= m; ++i ){
if( i < n ) min = i;
else min = n;
for( j = 1; j <= min; ++j ){
data[i][j] = ((long long)j*data[i-1][j] + data[i-1][j-1])% mod;
}
}
}