1. 程式人生 > >hdu2048()

hdu2048()

根據題面可知,這道題實際上就是讓我們求:當所有人都拿不到自己所對應的號時的可能性,實際上就是一個重排問題 直接上程式碼

#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; }