Pagini recente » Cod sursa (job #100499) | Cod sursa (job #787672) | Cod sursa (job #2108160) | Cod sursa (job #3152396) | Cod sursa (job #1142026)
#include <cstdio>
#include <ctime>
using namespace std;
int n, k, C[26][26];
double prod, prob[26];
void read()
{
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
scanf("%d %d", &n, &k);
for(int i = 0; i < n; ++i)
scanf("%lf", &prob[i]);
}
void back(int niv, int x, double aux)
{
if(niv == k)
{
prod += aux;
return;
}
for(int i = x; i+k <= n+niv; ++i)
{
back(niv + 1, i+1, aux * prob[i]);
}
}
void solve()
{
int i, j;
prod = 0;
back(0, 0, 1.);
for (i = 0; i <= n; ++i)
for (C[i][0] = 1, j = 1; j <= i; ++j)
C[i][j] = C[i-1][j]+C[i-1][j-1];
printf("%lf", prod / (double)C[n][k]);
/*do {
prod += prob[nrp/k];
for(int i = 0; i < perm.size(); ++i)
cout << perm[i] << " ";
cout << '\n';
nrp++;
} while(next_permutation(perm.begin(), perm.end()));*/
}
int main()
{
//double tclock = clock();
read();
solve();
//cout << (clock() - tclock) / CLOCKS_PER_SEC;
return 0;
}