这个题用了一个错排公式进行递推a[i]=(i-1)(a[i-1]+a[i-2])
1 #include<stdio.h> 2 int main() 3 { 4 __int64 a[22]={0,0,1,2}; 5 int i,n,m; 6 double num; 7 for(i=4;i<21;i++) 8 a[i]=(i-1)*(a[i-1]+a[i-2]); 9 scanf("%d",&n); 10 while(n--) 11 { 12 num=1; 13 scanf("%d",&m); 14 for(i=1;i<=m;i++) 15 num*=i; 16 printf("%.2lf",((a[m]*1.0)/num)*100); 17 putchar('%'); 18 putchar(' '); 19 } 20 return 0; 21 }