Pagini recente » Cod sursa (job #1445937) | Cod sursa (job #789488) | Cod sursa (job #1788681) | Cod sursa (job #2487747) | Cod sursa (job #449231)
Cod sursa(job #449231)
#include<cstdio>
using namespace std;
int n,k,v[26];
double a[26];
double s,prob=1;
long long kf=1,nkf=1;
void read();
void solve(int p);
void write();
void calc(int A[]);
int main()
{
freopen("dezastre.in","r",stdin);
freopen("dezastre.out","w",stdout);
read();
solve(1);
write();
return 0;
}
void read()
{
int i;
double x;
double a2=1,b;
scanf("%d %d\n",&n,&k);
for (i=1;i<=n;++i)
{
scanf("%lf",&x);
a[i]=x;
}
for (i=1;i<=n;++i)
{
b=i;
prob*=a2/b;
}
for (i=1;i<=k;++i)
kf*=i;
for (i=1;i<=n-k+1;++i)
nkf*=1;
}
void solve(int p)
{
int i;
for (i=v[p-1]+1;i<=n;++i)
{
v[p]=i;
if (p==k)
calc(v);
else
solve(p+1);
}
}
void calc(int A[])
{
int i;
double z=1;
for (i=1;i<=k;++i)
z*=a[A[i]];
s+=z*prob*nkf*kf;
}
void write()
{
printf("%.6lf",s);
}