Pagini recente » Cod sursa (job #1581821) | Cod sursa (job #1147261) | Cod sursa (job #252048) | Cod sursa (job #2058245) | Cod sursa (job #2493352)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream fi("dezastru.in");
ofstream fo("dezastru.out");
int n,k,st[30],i;
double p[30],sprob,nrprob,r;
int valid(int niv)
{
int i;
for(i=1;i<niv;i++)
{
if(st[i]==st[niv])return 0;
}
return 1;
}
void bk(int niv,double prob)
{
int i;
for(i=1;i<=n;i++)
{
st[niv]=i;
if(valid(niv))
{
prob*=p[i];
if(niv==k)
{
sprob+=prob;
nrprob++;
}
else
{
bk(niv+1,prob);
}
prob/=p[i];
}
}
}
int main()
{
fi>>n>>k;
for(i=1;i<=n;i++)
{
fi>>p[i];
}
bk(1,1);
r=sprob/nrprob;
fo<<fixed<<setprecision(6)<<r;
return 0;
}