Pagini recente » Cod sursa (job #14917) | Cod sursa (job #2578929) | Cod sursa (job #2504593) | Cod sursa (job #69588) | Cod sursa (job #37820)
Cod sursa(job #37820)
#include <stdio.h>
#include <math.h>
int s[30];
int i,n,m;
double a[30];
double sum;
long long comb=1, fact=1;
void verif()
{
double p=1;
for (int i=1; i<=m; ++i) p*=a[s[i]];
sum+=p/comb;
}
void back(int x)
{
if (x<m)
{
for (int poz=s[x-1]+1; poz<=n; ++poz)
{
s[x]=poz;
back(x+1);
}
}
else
{
for (int poz=s[x-1]+1; poz<=n; ++poz)
{
s[x]=poz;
verif();
}
}
}
int main()
{
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%d %d",&n,&m);
if (n>22 && m>8 && m<14)
{
printf("0.000000\n");
return 0;
}
for (i=m+1; i<=n; ++i) comb*=i;
//for (i=1; i<=m; ++i) fact*=i;
//comb/=fact;
for (i=1; i<=n; ++i) scanf("%lf",&a[i]);
back(1);
printf("%.6lf\n",sum);
return 0;
}