您的位置:首页 > 其它

UVa 557 - Burger (概率)

2014-10-05 19:00 239 查看
思路参考/article/2061111.html

题意:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: