Cod sursa(job #2068749)

Utilizator Laura_CorneiLaura Maria Cornei Laura_Cornei Data 18 noiembrie 2017 10:51:55
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <iomanip>
#define nmax 30
using namespace std;
fstream f1("dezastru.in", ios::in);
fstream f2("dezastru.out", ios::out);
int n, m;
double p[nmax], suma[nmax][nmax], f[nmax];
void fact()
{
    int i;
    f[1]=1;
    for(i=2; i<=n; i++)
        f[i]=f[i-1]*i;
}
//suma[i][j]=suma prod de j fact alesi din primele i nr
//suma[i][j]= suma[i-1][j-1]*p[i]+ suma[i-1][j] ////alegi al i-lea fact pe poz j sau nu
void dinamica()
{
    int i, j;
    suma[1][1]=p[1];
    for(i=2; i<=n; i++)
        suma[i][1]=suma[i-1][1]+ p[i];
    for(i=2; i<=n; i++)
        for(j=2; j<=m; j++)
            suma[i][j]= suma[i-1][j-1]*p[i]+ suma[i-1][j];
}
int main()
{
    int i;
    f1>>n>>m;
    fact();
    for(i=1; i<=n; i++) f1>>p[i];
    dinamica();
    f2<<fixed<<setprecision(6)<<suma[n][m]*f[m]/f[n]*f[n-m];
    return 0;
}