错排递推公式f(n)=(f(n-1)+f(n-2))*(n-1)
#include <iostream>
#include <string>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
int n;
int l;
long long a[21];
a[1] = 0;
a[2] = 1;
for (int i = 3; i < 21; i++)
{
a[i] = (a[i - 1] + a[i - 2])*(i-1);
}
while (cin >> l)
{
while (l--)
{
cin >> n;
long long c=1;
for (int i = 1; i <=n ; i++)
{
c = c*i;
}
double res=(double)a[n]/c;
cout.precision(2);
cout <<fixed<<res*100<<"%"<< endl;
}
}
}