Pagini recente » Cod sursa (job #1589611) | Cod sursa (job #799872) | Cod sursa (job #1640823) | Cod sursa (job #256101) | Cod sursa (job #940002)
Cod sursa(job #940002)
#include<cstdio>
int n,m,i,viz[40];
long long mfact=1,nfact=1,nmfact=1;
double v[30],prod,rez;
int st[30];
long long nr=1,nrt;
void combinari(int k){
if(k == m+1)
{
prod=1;
for(i=1;i<=m;i++)
prod=prod*v[st[i]];
rez+=prod*mfact;
}
else{
for(int i = k; i <= n-m+k; i++)
if(!viz[i])
{
viz[i]=1;
st[k]=i;
combinari(k+1);
viz[i]=0;
}
}
}
int main()
{
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
scanf("%lf",&v[i]);
for(i=1;i<=n;i++)
nfact*=i;
for(i=1;i<=m;i++)
mfact*=i;
for(i=1;i<=n-m;i++)
nmfact*=i;
nrt=nfact/mfact;
nrt=nrt/nmfact;
for(i=1;i<=nrt;i++)
nr*=i;
combinari(1);
rez=rez/nr;
printf("%.6lf",rez);
}