Cod sursa(job #735116)

Utilizator gramatovici_paulGramatovici Paul gramatovici_paul Data 15 aprilie 2012 18:49:19
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>

using namespace std;


double p[30],a[30][30];

long long combinari(int n, int k)
{
    long long rez=1,i;
    if(n-k>k)
        return combinari(n,n-k);
    for(i=k+1;i<=n;++i)
    {
        rez=rez*i;
    }
    for(i=1;i<=n-k;++i)
        rez/=i;
    return rez;
}


int main()
{
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    int n,k,i,j;
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;++i)
        scanf("%lf",&p[i]);
    a[0][0]=1;
    for(i=1;i<=n;++i)
    {
        a[i][0]=1;
        for(j=1;j<=i;++j)
        {
            a[i][j]=a[i-1][j]+a[i-1][j-1]*p[i];
        }
    }
    printf("%.6lf",a[n][k]/combinari(n,k));
    return 0;
}