【uva11421】玩纸牌

数学期望。

#include<bits/stdc++.h>
const int N=105;
using namespace std;
double d[N][N],p;
int main(){
    int T,n,a,b,cnt=0;double p;scanf("%d",&T);
    while(T--){
        memset(d,0,sizeof(d));
        scanf("%d/%d%d",&a,&b,&n);
        p=(double)a/b;
        d[0][0]=1;d[0][1]=0;
        for(int i=1;i<=n;i++)
        for(int j=0;j*b<=a*i;j++){
            if(!j) d[i][j]=d[i-1][j]*(1-p);
            else d[i][j]=d[i-1][j]*(1-p)+d[i-1][j-1]*p;
        }
        double q=0;
        for(int i=0;i<=n;i++)q+=d[n][i];
        printf("Case #%d: %d\n",++cnt,int(1/q));
    }
}

 

posted @ 2017-05-25 15:07  zcysky  阅读(184)  评论(0编辑  收藏  举报