典型的错排题目
所以错排结果为(n-1)*(f(n-1)+f(n-2))。
#include <stdio.h>
#include <stdlib.h>
__int64 a[21]={0,0,1};
int main()
{
int i,m;
for(i=3;i<=21;i++){
a[i]=(a[i-1]+a[i-2])*(i-1);
}
while(scanf("%d",&m)!=EOF){
while(m--){
int n;
scanf("%d",&n);
double result=0;
__int64 s=1;
for(i=2;i<=n;i++){
s*=i;
}
result=(double)a[n]*100.0/s;
printf("%.2lf%%\n",result);
}
}
return 0;
}