Pagini recente » Cod sursa (job #1840851) | Cod sursa (job #553004) | Cod sursa (job #2369475) | Cod sursa (job #907290) | Cod sursa (job #1059171)
#include <stdio.h>
int n, k;
int nc;
double p[26], pa[4000000];
void genereaza_combinari(int, int, double);
double calculeaza_probabilitate();
int main()
{
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
scanf("%d %d", &n, &k);
for (int i = 1; i <= n; ++i)
{
scanf("%lf", &p[i]);
}
genereaza_combinari(1, 0, 1.0f);
double prob = calculeaza_probabilitate();
printf("%.6lf", prob);
return 0;
}
void genereaza_combinari(int curent, int start, double prob)
{
if (curent <= k)
{
for (int i = start + 1; i <= n; ++i)
{
genereaza_combinari(curent + 1, i, prob * p[i]);
}
}
else
{
pa[++nc] = prob;
}
}
double calculeaza_probabilitate()
{
double p = 0.0;
for (int i = 1; i <= nc; ++i)
{
p += (pa[i] / nc);
}
return p;
}