#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];
else
t*=(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);
}
}
uva 11181 条件概率
最新推荐文章于 2025-07-02 20:00:00 发布