uva 11181 条件概率

来源:互联网 发布:如何调用数组方法 编辑:程序博客网 时间:2024/05/22 00:16
#include<cstdio>#include<cstring>using namespace std;double d[100],res,p[100];int main(){int n,r,t=1;while(~scanf("%d%d",&n,&r)&&(n+r)){for(int i=0;i<n;i++){scanf("%lf",&p[i]);}res=0;memset(d,0,sizeof(d));for(int s=0;s<(1<<n);s++){int num=0;for(int j=0;j<n;j++)if(s&(1<<j))num++;if(num==r){double t=1;for(int j=0;j<n;j++)if(s&(1<<j))t*=p[j];elset*=(1-p[j]);res+=t;for(int j=0;j<n;j++)if(s&(1<<j))d[j]+=t; }}printf("Case %d:\n",t++);for(int i=0;i<n;i++)printf("%.6f\n",d[i]/res);}}