Pagini recente » Cod sursa (job #1489308) | Cod sursa (job #2849772) | Cod sursa (job #1608877) | Cod sursa (job #2060536) | Cod sursa (job #2174830)
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
#define SIZE 25
static double sum, p[SIZE];
static int np, sol[SIZE+1];
static void comb(int n, int k)
{
int pos, filled_pos;
double prod, prods[SIZE];
pos = 1;
prod = 1.0;
while (pos > 0) {
filled_pos = 0;
while (sol[pos] < n - k + pos && !filled_pos) {
sol[pos]++;
filled_pos = 1;
}
if (filled_pos) {
prods[pos] = prod;
prod *= p[sol[pos] - 1];
if (pos == k) {
sum += prod;
np++;
prod = prods[pos];
} else {
pos++;
sol[pos] = sol[pos - 1];
}
} else {
pos--;
prod = prods[pos];
}
}
}
int main(void)
{
int i, n, k;
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
scanf("%d %d", &n, &k);
for (i = 0; i < n; i++) {
scanf("%lf", &p[i]);
}
comb(n, k);
printf("%lf", sum / np);
return 0;
}