Pagini recente » Cod sursa (job #587232) | Cod sursa (job #2953906) | Cod sursa (job #2020851) | Cod sursa (job #26324) | Cod sursa (job #92382)
Cod sursa(job #92382)
#include <stdio.h>
#define NMAX 26
int st[NMAX], n, m;
double a[NMAX];
long double S;
long long C = 1, D = 1;
void calcul()
{
int i;
long double p = 1.0;
for ( i = 1; i <= m; i++)
p *= a[st[i]];
S += p / C;
}
void back(int k)
{
int i, lim;
if ( k == m+1)
calcul();
else
{
lim = n - m + k;
for ( i = st[k-1] + 1; i <= lim; i++)
{
st[k] = i;
back(k+1);
}
}
}
int main()
{
int i, lim;
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
scanf("%d %d", &n, &m);
for ( i = 1; i <= n; i++)
scanf("%lf", &a[i]);
for ( i = m+1; i <=n; i++)
C *= i;
lim = n - m;
for ( i = 2; i <=lim; i++)
D *= i;
C = C / D;
back(1);
printf("%0.6llf", S);
return 0;
}