Pagini recente » Cod sursa (job #2605631) | Cod sursa (job #2757326) | Cod sursa (job #250857) | Cod sursa (job #2635712) | Cod sursa (job #2068749)
#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;
}