Pagini recente » Cod sursa (job #2026722) | Cod sursa (job #2766766) | Cod sursa (job #1680677) | Cod sursa (job #361525) | Cod sursa (job #1300521)
#include <cstdio>
using namespace std;
int n,k,sol[30],i,l,p;
float a[30],nr;
void calc(float &nr)
{
int j;
float x=1;
for(j=1; j<=k; ++j)
x*=a[sol[j]];
nr+=x;
return;
}
bool ok(int l)
{
int j;
bool ok2=true;
for(j=1; j<l; ++j)
if(sol[j]==sol[l])
{
ok2=false;
break;
}
return ok2;
}
void back(int l)
{
int i;
if(l>k)
{calc(nr);}
else
{
for(i=1; i<=n; ++i)
{
sol[l]=i;
if(ok(l))
back(l+1);
}
}
return;
}
int main()
{
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%d %d\n",&n,&k);
for(i=1; i<=n; ++i)
scanf("%f",&a[i]);
nr=0;
p=1;
for(i=2;i<=n;++i) p*=i;
for(i=2;i<=n-k;++i) p/=i;
back(1);
printf("%.6f",nr/p);
return 0;
}