Pagini recente » Cod sursa (job #2420038) | Cod sursa (job #2638842) | Cod sursa (job #1899454) | Cod sursa (job #1816827) | Cod sursa (job #1805220)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
int n, k,i, niv, nrsol=1, aranjamente=1;
double prob[30], prod, probfinal;
int sol[30];
void back(int niv)
{
if (niv == k+1)
{
/*
for (i=1; i <= k; i++)
{
out << sol[i] << ' ';
}
out << '\n';
*/
prod=1;
for (i=1; i <= k ; i++)
{
prod=prod*prob[sol[i]];
}
probfinal = probfinal + prod/nrsol;
}
else
{
if (niv > 1) sol[niv]=sol[niv-1];
else sol[niv]=0;
while (sol[niv] < n-k+niv)
{
sol[niv]++;
back(niv+1);
}
}
}
int main()
{
in >> n >> k;
for(i=1; i <= n; i++)
{
in >> prob[i];
}
for(i=1; i <= n; i++)
{
nrsol=nrsol*i;
}
back(1);
for (i=n; i>= n-k+1; i--)
{
aranjamente=aranjamente*i;
}
out << setprecision(6);
out << (aranjamente/n)*probfinal;
return 0;
}