错排公式的应用。
#include <iostream>
#include <iomanip>
using namespace std;
long long int fz[25];
long long int fm[25];
void tofz()
{
fz[1]=0; fz[2]=1;
for(int i=3;i<=20;i++)
fz[i]=(i-1)*(fz[i-1]+fz[i-2]);
}
void tofm()
{
fm[1]=1;fm[2]=2;
for(int i=3;i<=20;i++)
fm[i]=fm[i-1]*i;
}
int main()
{
int n,t;
double ans;
tofm();
tofz();
/*
for(int i=2;i<=20;i++)
{
cout<<fz[i]<<" "<<fm[i]<<endl;
}
*/
cin>>t;
while(t--)
{
cin>>n;
ans=fz[n]/(fm[n]+0.0);
ans=ans*100;
cout<<setiosflags(ios::fixed)
<<setprecision(2)<<ans<<"%"<<endl;
}
return 0;
}