Pagini recente » Cod sursa (job #3193841) | Cod sursa (job #1644959) | Cod sursa (job #3143368) | Cod sursa (job #1005149) | Cod sursa (job #3262318)
/// VARIANTA 2
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f ("dezastru.in");
ofstream g ("dezastru.out");
const int NMAX = 25;
int n, K;
double D[NMAX+1][NMAX+1], P[NMAX+1];
int comb(int n, int k) {
int c = 1;
if (n - k < k) k = n-k;
for (int i=1; i<=k; i++)
c = c * (n - k + i) / i;
return c;
}
void calcul() {
for (int i=0; i<=n; i++)
D[i][0] = 1;
for (int i=1; i<=n; i++)
for (int j=1; j <= min(i,K); j++)
D[i][j] = D[i-1][j] + D[i-1][j-1] * P[i];
}
int main()
{
f >> n >> K;
for (int i=1; i<=n; i++)
f >> P[i];
calcul();
g << fixed << setprecision(6) << D[n][K] / comb(n, K);;
f.close();
g.close();
return 0;
}