Pagini recente » Cod sursa (job #414294) | Cod sursa (job #2245194) | Cod sursa (job #2035422) | Cod sursa (job #1432727) | Cod sursa (job #2504717)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
// dp[i][j] din primele i am ales j
int n, k, nr;
double calcul_cst ( int n, int k ){
double ans1 = 1, ans2 = 1;
for ( int i = 1; i <= k; i++ ){
ans1 *= (n - k + i);
ans2 *= i;
}
return ans1 / ans2;
}
int main (){
ifstream in ("dezastru.in");
in >> n >> k;
double p[n + 2];
double dp[n + 1][n + 1] = {};
for (int i = 1; i <= n; i++ )
in >> p[i];
in.close();
for (int i = 0; i <= n; i++ )
dp[i][0] = 1.0;
// for ( int i = 0; i < 3;i ++ ){
// for ( int j = 0; j < 3; j ++ )
// cout << dp[i][j] << " ";
// cout << '\n';
// }
double MOD = calcul_cst(n, k);
for ( int i = 1; i <= n; i++ )
for ( int j = 1; j <= k; j++ )
dp[i][j] = dp[i - 1][j] + (dp[i - 1][j - 1] * p[i]);
ofstream out ("dezastru.out");
out << setprecision(6) << dp[n][k] / MOD;
out.close();
return 0;
}