Pagini recente » Monitorul de evaluare | Cod sursa (job #3260205) | Cod sursa (job #582197) | Cod sursa (job #482306) | Cod sursa (job #991513)
Cod sursa(job #991513)
#include <cstdio>
using namespace std;
int n,n1,k1,a[25];
double pt=0,p[25];
void back(int k,double pr)
{
int i,j,e;
double pr1;
for(i=0;i<n;++i)
{
pr1=pr;
e=1;
for(j=0;j<k&&e;++j) if(a[j]==i) e=0;
if(e)
{
a[k]=i;
pr1*=p[i];
if(k==k1-1)
{
pt+=pr1/n1;
}
else back(k+1,pr1);
}
}
}
void fact()
{
n1=1;
for(int i=2;i<=n;++i) n1*=i;
}
int main()
{
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
int i;
scanf("%d%d",&n,&k1);
for(i=0;i<n;++i) scanf("%lf",&p[i]);
fact();
back(0,1);
printf("%.6lf\n",pt);
return 0;
}