题解
根据题意描述,不妨先求出最后两个人吃到不同的汉堡的概率,设其为p。那么易知,前面n-2个人中,有n/2-1个人吃了牛肉堡,剩下的人吃了鸡肉堡。
因此p[n]=(0.5)^(n-2)C(n-2,n/2-1),p[n + 1] / p[n] = (2 n - 1)/ (2 * n)。最终答案为1-p。不过可以发现p可以进行递推,因此可以事先算出所有的p值,最后直接输出答案即可。- 代码
#include <cstdio>
using namespace std;
double ans[50010];
int t,n;
int main()
{
ans[1]=1.0;
for(int i=1;i<=50002;++i)
ans[i+1]=double(ans[i]*(2*i-1)/(2*i));
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%.4lf\n",1.0-ans[n/2]);
}
return 0;
}
166

被折叠的 条评论
为什么被折叠?



