Gym Gym 101147G 第二類斯特林數
阿新 • • 發佈:2017-05-29
event for cnblogs color ide hide col problem pan
題目鏈接:http://codeforces.com/gym/101147/problem/G
題意:n個人,去參加k個遊戲,k個遊戲必須非空,有多少種放法?
分析: 第二類斯特林數,劃分好k個集合後乘以階乘;
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 const int maxn = 1010; 6 const long long MOD = 1000000000 + 7L; 7 long long stir[maxn][maxn]; 8 long long fac[maxn]; 9 10View Codevoid init() { 11 12 fac[1] = fac[0] = 1; 13 for(int i=2;i<=1000;i++) { 14 fac[i] = fac[i-1]*i%MOD; 15 } 16 17 18 stir[1][1]=1; 19 for(int i=2; i<=1000; i++) 20 for(int j=1; j<=i; j++) 21 stir[i][j]=(stir[i-1][j-1]+(long long)j*stir[i-1][j]%MOD)%MOD;22 } 23 24 int main() { 25 freopen("galactic.in","r",stdin); 26 init(); 27 int t; 28 scanf("%d",&t); 29 while(t--) { 30 int n,k; 31 scanf("%d%d",&n,&k); 32 33 if(n>=k) { 34 printf("%I64d\n",stir[n][k]*fac[k]%MOD); 35} 36 else puts("0"); 37 38 } 39 return 0; 40 }
Gym Gym 101147G 第二類斯特林數