用的是错排思想:参见错排思想
要注意的是:sum,和b[ ]都要定义成double ,不然就错了
#include <stdio.h>
int main()
{
int a,i,c;
double sum;
double b[25];
scanf("%d",&a);
b[1]=0;
b[2]=1;
for(i=3;i<=20;i++)
{
b[i]=(i-1)*(b[i-1]+b[i-2]);
}
while(a--)
{
scanf("%d",&c);
sum=1;
for(i=1;i<=c;i++)
sum*=i;
printf("%.2lf%%
",b[c]*100.0/sum);
}
return 0;
}