Pagini recente » Cod sursa (job #3220783) | Cod sursa (job #2376276) | Cod sursa (job #2489781) | Cod sursa (job #1432970) | Cod sursa (job #134240)
Cod sursa(job #134240)
#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);
}
}
}
int fac(int n)
{
int aaa=1;
for (int i=1; i<=n; i++) aaa*=i;
return aaa;
}
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;
}