Pagini recente » Cod sursa (job #2309871) | Cod sursa (job #160991) | Cod sursa (job #2277302) | Cod sursa (job #446548) | Cod sursa (job #1921646)
#include <cstdio>
#define N 30
using namespace std;
int n, k, v[N], nr, viz[N];
float d[N], s;
int posib(int n)
{
int nf=1;
for(int i=n;i>=2;i--)
nf=nf*i;
return nf;
}
float suma()
{
float s=1.0;
for(int i=0;i<k;i++)
s*=d[v[i]];
return s;
}
void bt(int k)
{
if(k==n)
{
s+=suma()/nr;
return;
}
for(int i=0;i<n;i++)
if(!viz[i])
{
viz[i]=1;
v[k]=i;
bt(k+1);
viz[i]=0;
}
}
int main()
{
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
scanf("%d %d\n", &n, &k);
for(int i=0;i<n;i++)
scanf("%f ", &d[i]);
nr=posib(n);
bt(0);
printf("%f", s);
return 0;
}