Pagini recente » Cod sursa (job #1200542) | Cod sursa (job #355024) | Cod sursa (job #2066945) | Cod sursa (job #284232) | Cod sursa (job #1773630)
#include <cstdio>
#define NMax 25
double f[NMax+1],ant[NMax+1];
int C[NMax+1][NMax+1];
int v[NMax+1];
void Precalc()
{
int i,j;
C[1][0] = C[0][0] = 1;
for(i = 1; i <= NMax; ++i)
for(j = 0; j <= i; ++j) C[i][j] = C[i-1][j-1] + C[i-1][j];
}
int main(){
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
int idx,i,N,K;
double prec,temp,sum=0,base=1;
Precalc();
scanf("%d %d",&N,&K);
for(i = 1; i <= N; ++i) scanf("%lf",&f[i]);
base = C[N][K];
for(i = 1; i <= K; ++i) v[i] = i;
idx = ant[0] = 1;
while(1)
{
for(i = idx; i <= K; ++i) ant[i] = ant[i-1] * f[ v[i] ];
sum = sum + ant[K];
for(i = K; i >= 1 && v[i]==N+i-K; --i);
if( i < 1 ) break;
++v[i];
for(++i; i <= N; ++i) v[i] = v[i-1]+1;
}
printf("%f\n", sum/base );
return 0;
}