Cod sursa(job #297189)

Utilizator QSilverGeorge Popa QSilver Data 5 aprilie 2009 11:43:40
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>   
#define maxN 32   
  
double P[maxN], C[maxN][maxN];   
int N, K, Nr[maxN][maxN];   
  
int main () {   
        double Sum = 1;   
        int i, j;   
  
    freopen("dezastru.in", "r", stdin);   
    freopen("dezastru.out", "w", stdout);   
  
    scanf("%d%d", &N, &K);   
  
    for (i = 1; i <= N; ++ i) {   
        scanf("%lf", &P[i]);   
        Sum = Sum * P[i];   
        C[i][0] = 1.00;   
        Nr[i][0] = 1;   
    }   
  
    if (N == K) {   
        printf("%.6lf\n", Sum);   
        return 0;   
    }   
       
    C[0][0] = 1.00; Nr[0][0] = 1;   
    for (i = 1; i <= N; ++ i)   
        for (j = 1; j <= i; ++ j) {   
            Nr[i][j] = Nr[i - 1][j] + Nr[i - 1][j - 1];   
            C[i][j] = C[i - 1][j] + C[i - 1][j - 1] * P[i];   
        }   
  
    printf("%.6lf\n", C[N][K] / (Nr[N][K] * 1.00));   
}