uva 10056 What is the Probability?
数学题(概率,精度)
题意:n个人丢骰子,丢到某个点数为赢然后结束,从第1个人开始丢然后依次下去,然后循环回来,直到有人赢为止。输入n个赢,每个人丢到目标点数的概率,第m个人,求第m个人赢的概率
算出在第一轮中第m个人赢的概率q1
算出第2轮中第m个人赢的概率q2
……………………
算出第k轮中第m个人赢的概率qk
ans=q1+q2+q3+q4……+qk
其中要设置一个精度qk<E , E的精度随便搞一个都差不多了
#include <cstdio> const double E=1e-10; int main() { int T,n,m,c; double p,ans,t,q; scanf("%d",&T); while(T--) { scanf("%d%lf%d",&n,&p,&m); t=1; for(int i=1; i<=n; i++) t*=(1-p); c=0; ans=0; while(1) { q=1; for(int i=0; i<c; i++) q*=t; for(int i=1; i<m; i++) q*=(1-p); q*=p; if(q<E) break; else ans+=q; c++; } printf("%.4f\n",ans); } return 0; }