Pagini recente » Cod sursa (job #2098332) | Cod sursa (job #2675690) | Cod sursa (job #8460) | Cod sursa (job #3242042) | Cod sursa (job #3152946)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("dezastru.in");
ofstream fout ("dezastru.out");
int n,k,x[30],q;
long long nr=1;
double v[30],s,t,w;
void afis(int q)
{
s=1;
for (int j=1;j<=q;j++)
s=s*v[x[j]];
t=t+s/w;
}
bool ok(int q)
{
for (int i=1;i<q;i++)
if(x[q]==x[i]) return false;
return true;
}
bool sol(int q)
{
return k==q;
}
void bck(int q)
{
for (int i=1;i<=n;i++)
{x[q]=i;
if (ok(q)) {if (sol(q)) afis(q);
else bck(q+1);}}
}
int main()
{
fin >>n>>k;
for (int i=n-k+1;i<=n;i++)
nr=nr*i;
w=(double)nr;
for (int i=1;i<=n;i++)
{
fin >>v[i];
}
bck(1);
fout <<t;
return 0;
}