You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
618 B
29 lines
618 B
#include <bits/stdc++.h>
|
|
using namespace std;
|
|
const int N = 110;
|
|
typedef long long LL;
|
|
LL f[N], sum;
|
|
// f(n)=(n-1)*(f(n-1)+f(n-2))
|
|
int main() {
|
|
int m;
|
|
scanf("%d", &m);
|
|
|
|
while (m--) {
|
|
int n;
|
|
scanf("%d", &n);
|
|
// base case
|
|
sum = 1;
|
|
f[1] = 0, f[2] = 1;
|
|
|
|
//递推出错排次数
|
|
for (int i = 3; i <= n; i++)
|
|
f[i] = (i - 1) * (f[i - 1] + f[i - 2]);
|
|
|
|
//总次数
|
|
for (int i = 1; i <= n; i++) sum = sum * i;
|
|
|
|
//比率
|
|
printf("%.2lf%%\n", (double)f[n] / sum * 100);
|
|
}
|
|
return 0;
|
|
} |