Pagini recente » Cod sursa (job #1482086) | Cod sursa (job #982390) | Cod sursa (job #1009867) | Cod sursa (job #1003428) | Cod sursa (job #717431)
Cod sursa(job #717431)
#include <fstream>
#include <cstdio>
using namespace std;
int n, m, t[30][30], nrc, c[28];
double a[28], sol, prod;
void Read()
{
ifstream f("dezastru.in");
f>>n>>m;
int i;
for (i=1; i<=n; i++)
f>>a[i];
f.close();
}
void GenComb()
{
int i, j;
for (i=0; i<28; i++)
t[i][i] = t[i][0] = 1;
for(i=1; i<28; i++)
for(j=1; j<i; j++)
t[i][j] = t[i-1][j] + t[i-1][j-1];
}
void back(int k)
{
if (k-1 == m)
{
sol += prod;
}
else
{
int i;
for (i=c[k-1] + 1; i<=n-m+k; i++)
{
prod *= a[i];
c[k] = i;
back(k+1);
prod /= a[i];
}
}
}
void Solve()
{
GenComb();
nrc = t[n][m];
prod = 1;
back(1);
}
void Write()
{
freopen("dezastru.out", "w", stdout);
printf("%.6lf\n", sol/nrc);
}
int main()
{
Read();
Solve();
Write();
return 0;
}