组合数学模板

第一类斯特林数

void init(){
 s[0][0]=1;
 for(i=1;i<=n;i++){
  s[i][0]=0;s[i][i]=1;
  for(j=1;j<i;j++){
   s[i][j]=(s[i-1][j-1]+(i-1)*s[i-1][j])%MOD;
  }
 }
}

第二类斯特林数

void init(){
 s[0][0]=1;
 for(i=1;i<=n;i++){
  s[i][0]=0;s[i][i]=1;
  for(j=1;j<i;j++){
   s[i][j]=(s[i-1][j-1]+j*s[i-1][j])%MOD;
  }
 }
}

组合数

void init(){
 int i,j;
 c[0][0]=1;
 for(i=1;i<=2005;i++){
  c[i][0]=1;c[i][i]=1;
  for(j=1;j<i;j++){
   c[i][j]=(c[i-1][j-1]+c[i-1][j])%MOD;
  }
 }
}

你可能感兴趣的:(组合数学)