uva557(概率)

来源:互联网 发布:淘宝详情页图片模板 编辑:程序博客网 时间:2024/05/02 00:28

题意:

有2n个人,有两种汉堡a,b;各n个;

现在每个人都取一个汉堡,取之前投硬币,确定拿那种(50%概率);但是如果只剩一种汉堡就不用投了;

问最后两个人拿到一样的汉堡的概率;


思路:

首先我们可以求最后两个人拿不一样汉堡的概率,因为如果最后两个人拿不一样,则前面所有人都有投硬币,更好算;

那么如果最后两个人拿不一样的汉堡,那么前面则拿两种汉堡的人相等;

如果只有2个人,那么他们拿不一样汉堡的概率肯定是1;如果四个人呢,就要求前面两个人拿不一样的汉堡,而如果6个人,要要求前面四个人,两个两个拿一样;

可以推出一个公式p[i + 1] = (1 - 0.5 / i) * p[i];


#include<cstdio>#include<cstring>const int N = 50005;int n;double p[N];void init(){p[1] = 1.0;for(int i = 1 ; i < N ; i++) {p[i + 1] = (1 - 0.5 / i) * p[i];}}int main() {init();int t;scanf("%d",&t);while(t--) {scanf("%d",&n);printf("%.4lf\n",1 - p[n / 2]);}}


0 0
原创粉丝点击