Pagini recente » Diferente pentru documentatie/arhiva-educationala intre reviziile 7 si 6 | Cod sursa (job #291388) | Cod sursa (job #2401150) | Cod sursa (job #1914948) | Cod sursa (job #1219412)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int N, K, Comb[30][30];
double sum, Pb[30], Dp[30][30];
int main()
{
fin >> N >> K;
for (int i=1; i<=N; i++) fin >> Pb[i];
Comb[0][0] = Dp[0][0] = 1;
for (int i=1; i<=N; i++)
{
Comb[i][0] = Dp[i][0] = 1;
for (int j=1; j<=K; j++)
{
Dp[i][j] = Dp[i-1][j] + Dp[i-1][j-1] * Pb[i];
Comb[i][j] = Comb[i-1][j] + Comb[i-1][j-1];
}
}
fout << setprecision(6) << fixed << Dp[N][K] / Comb[N][K] << '\n';
fout.close();
return 0;
}