问题
分析
每次选择的概率都是p=0.5,二项分布,按照二项分布的公式进行计算
先算最后两个孩子吃到不同的汉堡的概率,前2n-2个孩子吃了n-1个鸡肉,n-1个肉的,概率是
f
(
n
)
=
C
2
n
−
2
n
−
1
(
1
2
)
2
n
−
2
f(n)=C_{2n-2}^{n-1}(\frac{1}{2})^{2n-2}
f(n)=C2n−2n−1(21)2n−2,然后推导得到
f
(
n
+
1
)
f
(
n
)
=
2
n
−
1
2
n
\frac{f(n+1)}{f(n)}=\frac{2n-1}{2n}
f(n)f(n+1)=2n2n−1
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <vector>
using namespace std;
typedef long long LL;
const LL maxn=50000+5,Inf=0x3f3f3f3f;
int kase,n;
double f[maxn];
int main(void){
f[1]=1;
for(int i=1;i<50000;++i){
f[i+1]=f[i]*(1-0.5/i);
}
scanf("%d",&kase);
while(kase--){
scanf("%d",&n);
printf("%.4lf\n",1-f[n/2]);
}
return 0;
}