int 的话一定会乘爆了的 用double。
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
int t,n;
double a[21],b[21];
a[1]=0,a[2]=1,b[1]=1,b[2]=2;
for(int i=3;i<21;i++)
{
a[i]=(i-1)*(a[i-1]+a[i-2]);
b[i]=b[i-1]*i;
}
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
double x;
x=(a[n]/b[n])*100;
printf("%.2lf%%\n",x);
}
return 0;
}