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;}