Pagini recente » Cod sursa (job #2559826) | Cod sursa (job #34326) | Cod sursa (job #826484) | Cod sursa (job #2924496) | Cod sursa (job #434292)
Cod sursa(job #434292)
#include <cstdio>
int factorial(int number){
int result = 1;
while(number > 0)
result *= number--;
return result;
}
int main(){
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
int jump[40];
double prob[40], chance, temp;
int N, K, i, j, step, divider;
scanf("%d %d", &N, &K);
for(i = 1; i <= N; i++)
scanf("%lf", prob+i);
divider = factorial(N)/(factorial(K)*factorial(N-K));
for(i = 1; i <= K; i++)
jump[i] = i;
chance = 0;
while(true){
temp = 1;
for(i = 1; i <= K; i++)
temp *= prob[jump[i]];
chance += temp;
if(jump[K] < N)
jump[K]++;
else {
for(i = K-1; i > 0; i--)
if(jump[i]+1 != jump[i+1]){
jump[i]++;
step = 1;
for(j = i+1; j <= K; j++){
jump[j] = jump[i]+step;
step++;
}
break;
}
if(i == 0)
break;
}
}
printf("%lf\n", chance/divider);
return 0;
}