Pagini recente » Cod sursa (job #759122) | Cod sursa (job #3172173) | Cod sursa (job #2349404) | Cod sursa (job #2542539) | Cod sursa (job #1396923)
#include <fstream>
#include <iostream>
#include <iomanip>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
const int kMax = 30;
int n, k, comb[kMax][kMax];
double p[kMax], dp[kMax][kMax];
int main()
{
fin >> n >> k;
for (int i = 1; i <= n; ++i)
fin >> p[i];
comb[0][0] = 1;
for (int i = 1; i <= n; ++i)
{
comb[i][0] = 1;
for (int j = 1; j <= i; ++j)
comb[i][j] = comb[i - 1][j - 1] + comb[i - 1][j];
}
for (int i = 0; i <= n; ++i)
dp[i][0] = 1.0;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= i; ++j)
dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] * p[i];
for (int i = 1; i <= n; ++i)
{
for (int j = 1; j <= i; ++j)
cout << dp[i][j] << ' ';
cout << '\n';
}
fout.precision(6);
fout.setf(ios::fixed, ios::floatfield);
fout << 1.0 / comb[n][k] * dp[n][k] << '\n';
return 0;
}