Pagini recente » Cod sursa (job #981185) | Cod sursa (job #699284) | Cod sursa (job #2277376) | Monitorul de evaluare | Cod sursa (job #641234)
Cod sursa(job #641234)
#include <stdio.h>
#define IN "dezastru.in"
#define OUT "dezastru.out"
#define N 26
double p[N], rez;
int sol[N], pus[N], n, k, nf = 1;
void calcul(int);
int main(void) {
int i;
freopen(IN, "r", stdin); freopen(OUT, "w", stdout);
scanf("%d %d", &n, &k);
for(i = 1; i <= n; ++i) {
scanf("%lf", &p[i]);
nf *= i;
}
calcul(1);
printf("%.6f\n", rez);
return 0;
}
void calcul(int m) {
int i;
double aux;
if(m == k + 1) {
aux = 1;
for(i = 1; i <= k; ++i)
aux *= p[sol[i]];
rez += aux / nf;
} else {
for(i = 1; i <= n; ++i) {
if(!pus[i]) {
sol[m] = i;
pus[i] = 1;
calcul(m + 1);
pus[i] = 0;
}
}
}
}