思路參考http://blog.csdn.net/keshuai19940722/article/details/14058737
題意:
Ben和Bill是一對雙胞胎,生日那天他們請了2n個朋友(包括他們自己,題目給出的即爲2n),然後有n個漢堡和n個三明治,然後由Ben的左邊開始分食物,每個人選取食物的方式是先丟硬幣,正面漢堡,反面是三明治,問最後雙胞胎兄弟那道同一種食物的概率。
算法:
正面考慮不好計算,可以反面考慮。
題目可以遞推兄弟倆拿到不同的食物的概率,然後用1-p就是所要的答案。
p[i] = 1/2^(2 * i - 2) * C(i - 1, 2 * i - 2) p[i]表示2i個人的情況。
然後用p[i + 1] / p[i] = (2 * n - 1)/ (2 * n)。
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
double p[50000+10];
void init()
{
p[1] = 1;
for(int i=1;i<=50000;i++)
p[i+1] = p[i]*(2*i-1)/(2*i);
}
int main()
{
int n,T;
init();
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
printf("%.4lf\n",1-p[n/2]);
}
return 0;
}