Pagini recente » Cod sursa (job #2669829) | Cod sursa (job #379916) | Cod sursa (job #508885) | Cod sursa (job #3145008) | Cod sursa (job #134238)
Cod sursa(job #134238)
#include <stdio.h>
#define Nmax 26
double a[Nmax], rez;
int i, st[Nmax], n, k;
long long imp, inm;
void bkt(int i)
{
if (i>k)
{
double temp=1;
for (int j=1; j<=k; j++) temp*=a[st[j]];
rez+=temp;
}
else
{
for (int j=st[i-1]+1; j<=n; j++)
{
st[i]=j;
bkt(i+1);
}
}
}
long fac(int n)
{
for (int i=1, bau=1; i<=n; i++) bau*=i;
return bau;
}
int main()
{
freopen("dezastru.in", "r", stdin);
scanf("%d %d\n", &n, &k);
for (i=1; i<=n; i++)
scanf("%lf ", &a[i]);
fclose(stdin);
freopen("dezastru.out", "w", stdout);
imp=(fac(n)/fac(k))/fac(n-k);
for (inm=1, i=1; i<=k; i++) inm*=i;
bkt(1);
printf("%.6lf\n", rez/imp);
fclose(stdout);
return 0;
}