UVa 557 - Burger

来源:互联网 发布:js中each如何延时执行 编辑:程序博客网 时间:2024/05/05 11:20

题目大意:有n个牛肉汉堡和n个鸡肉汉堡给2n个孩子吃。每个孩子在吃之前都要抛硬币,正面吃牛肉汉堡,反面吃鸡肉汉堡。如果剩下的所有汉堡都一样,则不用抛硬币。求最后两个孩子吃到相同汉堡的概率。

正面不好思考,考虑最后两个孩子吃不同汉堡的概率。则根据概率相关知识,P(n) = (1 / 2) ^ (2n - 2) * C(n - 1, 2n - 2),由P(n)和P(n+1)的关系得到:P(n+1) / P(n) = (2n - 1) / 2n;由P(1) = 1可递推得到结果打表。

#include <iostream>#include <cstdio>using namespace std;double res[51200];void init(){res[1] = 1;for (int i = 1; i <= 50000; ++i)res[i + 1] = res[i] * (2 * i - 1) / (2 * i);}int main(){init(); int kase, n; cin >> kase;while (kase--){cin >> n;printf("%.4f\n", 1 - res[n / 2]);}return 0;}


0 0
原创粉丝点击