Cod sursa(job #1806506)

Utilizator andru47Stefanescu Andru andru47 Data 15 noiembrie 2016 14:11:49
Problema Dezastru Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>
using namespace std;
int n,k;
double a[100],din[100][100];
int main()
{
    freopen("dezastru.in", "r", stdin);
    freopen("dezastru.out", "w", stdout);
    scanf("%d %d\n", &n, &k);
    for(int i = 1; i<=n; ++i)
        scanf("%lf", &a[i]);
    din[0][0] = 1;
    for (int i = 1; i<=n; ++i)
    {
        din[i][0] = 1;
        for (int j = 1; j<=i; ++j)
            din[i][j] = din[i-1][j] + din[i-1][j-1] * a[i];
    }
    unsigned long long p1 = 1,p2=1,p3=1;
    for (int i = 1; i<=n; ++i)
        p1 *= i;
    for (int j = 1; j<=k; ++j)
        p2 *= j;
    for (int i = 1; i<=n-k; ++i)
        p3 *= i;
    unsigned long long nrcomb = 0;
    nrcomb = p1/p2;
    nrcomb /= p3;
    printf("%.6f", din[n][k]/nrcomb);
    return 0;
}