#include <iostream> using namespace std;
long long a[];
long long b[];
int main()
{
int C;
a[] = ;
a[] = ;
b[] = ;
b[] = ;
for (long i = ; i <= ; i++)
{
a[i] = (i - )*(a[i - ] + a[i - ]);
b[i] = i*b[i - ];
}
while (cin >> C)
{
while (C--)
{
int n;
cin >> n;
printf("%.2lf", 100.0*a[n] / b[n]);
cout << "%" << endl;
}
}
}
1--n
第一个位置是2--n,n-1种
第二个位置是1,剩余数排列 a(n-2)
第二个位置不是1,剩余数排列a(n-1)
a(n) = (n-1)*(a(n-2) + a(n-1))
http://acm.hdu.edu.cn/showproblem.php?pid=2048