Pagini recente » Cod sursa (job #2829347) | Cod sursa (job #1586552) | Cod sursa (job #2753144) | Cod sursa (job #732049) | Cod sursa (job #1773619)
#include <cstdio>
#define NMax 25
double f[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 i,N,K;
double 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;
while(1)
{
temp = 1;
for(i = 1; i <= K; ++i) temp = temp * f[ v[i] ];
sum = sum + temp;
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;
}