本文主要是介绍数学题(概率)UVA 10056-What is the Probability ?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
数学题(概率)UVA 10056-What is the Probability ?
-
题目链接:
F - What is the Probability ?
-
思路:
题目情景是有N个人,每个人获得想要得的数字的概率都是p,轮流抽,当有一个人获得想要的数字时,游戏结束,问第 I 个人获胜的概率
其实就是一个转圈抽奖的问题,设N个人都抽一次为一轮,那么第I个人在 K轮获胜的概率等价于 K-1轮没人抽到奖 * 第K轮前I-1人没抽到奖 * 第I个人抽到奖
写成公式:
所以第I个人的获胜概率等于在第K轮获奖概率的总和:
运气不好可能抽10000轮都没人中奖,题目只要求保留4位,那当P(K)<1e5 就没有计算价值了
-
代码:
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
#define Min_Precision 1e-6
int main()
{int S,N,I;double p;cin>>S;while(S--){cin>>N>>p>>I;double Res=0.0;double Circle=pow(1-p,I-1)*p; //第I人中奖double NoOne_pro=pow(1-p,N); //一轮下来没人中奖while(Circle>Min_Precision){Res+=Circle;Circle*=NoOne_pro;}cout<<fixed<<setprecision(4)<<Res<<endl;}return 0;
}
这篇关于数学题(概率)UVA 10056-What is the Probability ?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!