hdu2048()
阿新 • • 發佈:2018-12-11
根據題面可知,這道題實際上就是讓我們求:當所有人都拿不到自己所對應的號時的可能性,實際上就是一個重排問題 直接上程式碼
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=20+5;
ll dp[N];
int n;
int t;
ll pl(int i)
{
ll sum = 1;
for(int j = 2; j <= i; j++) sum *= j;
return sum;
}
int main()
{
dp[0]=0;
dp[1]=0;
dp[2]=1 ;
for (int i=3; i<=N; i++)
dp[i]=(i-1)*(dp[i-1]+dp[i-2]);
while (scanf("%d",&t)!=EOF)
{
while (t--)
{
scanf("%d",&n);
printf("%.2lf%%\n",100.0*dp[n]/pl(n));
}
}
return 0;
}