Cod sursa(job #38335)

Utilizator filipbFilip Cristian Buruiana filipb Data 25 martie 2007 17:53:50
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>

int N, K;
double M[26][26], p[26];
long double P;

int main(void)
{
    int i, j; double x;
    
    freopen("dezastru.in", "r", stdin);
    freopen("dezastru.out", "w", stdout);
    
    scanf("%d %d", &N, &K);
    for (i = 1; i <= N; i++)
    {
        scanf("%lf", &x);
        p[i] = x;
    }

    M[1][0] = 1.0; M[1][1] = p[1];    
    for (i = 2; i <= N; i++)
    {
        M[i][0] = 1.0;
        for (j = 1; j <= i; j++)
            M[i][j] = M[i-1][j] + M[i-1][j-1] * p[i];
    }
    
    P = M[N][K];
    for (i = 1; i <= N-K; i++) P *= i;        
    for (i = K+1; i <= N; i++) P /= i;        
        
    printf("%.7lf\n", (double)P);

    return 0;
}