PS:WA了两次...主要是没注意到fac的大小好像只能写到9...要用long long型递归求阶乘...

      然后就是错排公式...百度下..

代码:

#include "stdio.h"
long long dp[30];
long long fac[30];
int main(){
 int n,a,i;
 dp[0]=0;
 dp[1]=1;
 fac[0]=1;
 fac[1]=1;
 fac[2]=2;
 //dp[1]=0;
 //dp[2]=1;
 for(i=2;i<30;i++){
  dp[i]=i*(dp[i-1]+dp[i-2]);
  fac[i+1]=fac[i]*(i+1);
 }
 scanf("%d",&n);
 while(n--){
  scanf("%d",&a);
  printf("%.2lf%%\n",(double)dp[a-1]/fac[a]*100.0);
 }
 return 0;
}