Pagini recente » Cod sursa (job #37) | Cod sursa (job #2947176) | Cod sursa (job #1759952) | Cod sursa (job #2643246) | Cod sursa (job #2147813)
#include <cstdio>
#define MAXN 25
double p[MAXN + 1], d[MAXN + 1][MAXN + 1];
int main() {
FILE *fin, *fout;
int n, k;
double f1, f2, f3;
fin = fopen("dezastru.in", "r");
fscanf(fin, "%d%d", &n, &k);
for (int i = 1; i <= n; ++i) {
fscanf(fin, "%lf", &p[i]);
}
fclose(fin);
for (int i = 0; i < n; ++i) {
d[i][0] = 1;
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= k; ++j) {
d[i][j] = d[i - 1][j] + p[i] * d[i - 1][j - 1];
}
}
f1 = 1;
for (int i = 1; i <= n; ++i) {
f1 = i * f1;
}
f2 = 1;
for (int i = 1; i <= k; ++i) {
f2 = i * f2;
}
f3 = 1;
for (int i = 1; i <= n - k; ++i) {
f3 = i * f3;
}
fout = fopen("dezastru.out", "w");
fprintf(fout, "%.6lf\n", d[n][k] / (f1 / (f2 * f3)));
fclose(fout);
return 0;
}