UVa 557 - Burger (概率)

思路參考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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章