[UVA10056] What is the Probability ?

2017年9月14日

题目大意:有 n 个人在轮流玩类似于投骰子的游戏,游戏规则是这样的:第 1 个人扔一次,第 2 个人扔一次, … , 第 n 个人扔一次,第 1 个人扔一次,第 2 个人扔一次…如此循环扔,直到有一个人胜出后就结束游戏。已知每个人获胜的概率都相同,为 p,问你第 k 个人获胜的概率。

第 k 个人要获胜,可以在第一轮获胜,或者在第二轮获胜,或者在第三轮获胜…或者在第t轮获胜。

第一轮获胜的概率为 (1-p)^{k-1}p:表示前 k – 1 个人不获胜,第 k 个人获胜
第二轮获胜的概率为 (1-p)^{k-1+n}p:表示已经经过一轮都没获胜,第二轮的前 k – 1 个人不获胜,第 k 个人获胜

第 t 轮获胜的概率为 (1-p)^{k-1+tn}p:表示已经经过 t 轮都没获胜,第二轮的前 k – 1 个人不获胜,第 k 个人获胜

把上面都加起来就是答案了:\sum_{t=0}^\infty {(1-p)^{k-1+tn} \times p}

#include <bits/stdc++.h>
using namespace std;
int main()
{
  int t;
  scanf("%d", &t);
  while (t--) {
    int n, k;
    double p;
    scanf("%d %lf %d", &n, &p, &k);
    double ans = 0;
    for (int i = 0; i < 100; i++) {
      ans += pow(1 - p, k - 1 + i * n) * p;
    }
    printf("%.4lf\n", ans);
  }
  return 0;
}

发表回复

您的电子邮箱地址不会被公开。