http://acm.hdu.edu.cn/showproblem.php?pid=3625
斯特林(stirling)数
我的代码
1 #include <stdio.h>
2 #include <string.h>
3 const int N=21;
4 double s[N][N],f[N];
5 void stir()
6 {
7 memset(s,0,sizeof(s));
8 s[1][1]=1;
9 int i,j;
10 for (i=2;i<N;i++)
11 for (j=1;j<=i;j++)
12 s[i][j]=s[i-1][j-1]+(i-1)*s[i-1][j];
13 }
14 void fact()
15 {
16 f[0]=1;
17 for (int i=1;i<N;i++) f[i]=f[i-1]*i;
18 }
19 int main()
20 {
21 stir();
22 fact();
23 int T;
24 scanf("%d",&T);
25 while (T--)
26 {
27 int n,k,i;
28 scanf("%d%d",&n,&k);
29 double ans=s[n][1];
30 for (i=2;i<=k;i++) ans+=s[n][i]-s[n-1][i-1];
31 ans/=f[n];
32 printf("%.4lf\n",ans);
33 }
34 return 0;
35 }