Pagini recente » Cod sursa (job #396789) | Cod sursa (job #2961756) | Cod sursa (job #2267269) | Cod sursa (job #122999) | Cod sursa (job #200508)
Cod sursa(job #200508)
#include<stdio.h>
int n,m,nm,s[30];
long nrc;
float prc=1,prt;
float v[30],vs[30];
void btk(){
int k,up;
k=1;s[k]=0;
while(k){
up=0;
s[k]++;
if(s[k]<=nm+k){
up=1;
if(k==m) prc*=vs[s[k]];
else prc*=v[s[k]];
}
if(up)
if(k==m) {prt+=prc;nrc+=n-s[k]+1;prc/=vs[s[k]];goto aici;}
else {k++;s[k]=s[k-1];}
else {
aici: k--;
if(k) prc=prc/v[s[k]];
}
}
}
int main(){
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
int i;
scanf("%d%d",&n,&m);
nm=n-m;
v[0]=1.0;
for(i=1;i<=n;++i) scanf("%f",&v[i]);
vs[n]=v[n];
for(i=n-1;i>0;--i) vs[i]=vs[i+1]+v[i];
if(m==0) {prt=1;nrc=1;}
else btk();
printf("%0.6f",prt/nrc);
return 0;
}