Pagini recente » Cod sursa (job #2839713) | Cod sursa (job #335212) | Cod sursa (job #944983) | Cod sursa (job #326517) | Cod sursa (job #37736)
Cod sursa(job #37736)
#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*fact/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);
for (i=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;
}