Cod sursa(job #668617)

Utilizator SpiderManSimoiu Robert SpiderMan Data 25 ianuarie 2012 10:54:31
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
# include <cstdio>

const char *FIN = "dezastru.in", *FOU = "dezastru.out";

double P[30], A[30][30];
int N, K ;

double calc (void) {
    double comb = 1;
    for (int i = K + 1; i <= N; comb *= i++);
    for (int i = 2; i <= N - K; comb /= i++);
    return comb;
}

int main (void) {
    freopen (FIN, "r", stdin);

    scanf ("%d %d", &N, &K);

    for (int i = 1; i <= N; ++i)
        scanf ("%lf", P + i), A[i][0] = 1.0;
    A[0][0] = 1.0;
    for (int i = 1; i <= N; ++i)
        for (int j = 1; j <= i && j <= K; ++j)
            A[i][j] = A[i - 1][j] + A[i - 1][j - 1] * P[i];
    fprintf (fopen (FOU, "w"), "%.6lf", A[N][K] / calc ());
}