题目:​​http://acm.hdu.edu.cn/showproblem.php?pid=2048​

用错排,搞定!

#include <stdio.h>
__int64 a[21];
void inti()
{
int i,j;
for( i=1;i<21;i++)
{
a[i]=1;
for( j=2;j<=i;j++)
a[i]*=j;
}
}
int main()
{
int t,n;
inti();
__int64 sum[21]={0,0,1};
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=3;i<=n;i++)
sum[i]=(i-1)*(sum[i-1]+sum[i-2]);
printf("%0.2lf%%\n",(double)sum[n]/a[n]*100);
}
return 0;
}