Pagini recente » Cod sursa (job #863448) | Cod sursa (job #2841100) | Cod sursa (job #826189) | Cod sursa (job #708727) | Cod sursa (job #2104197)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
int n, m;
double valoare[26], uz[26], f[26], probabilitate;
double total_permutari = 0;
double atacuri = 0;
void Read()
{
in >> n >> m;
for(int i = 1; i <= n; i++)
in >> valoare[i];
}
void Calculeaza_Probabilitatea()
{
double produs = 1;
for(int i = 1; i <= m; i++)
{
int j = f[i];
produs = produs * valoare[j];
}
//out << produs << "\n";
total_permutari += produs;
}
void GenAranjamente(int k)
{
if(k-1==m)
{
Calculeaza_Probabilitatea();
}
else
for(int i = 1; i <= n; i++)
if(!uz[i])
{
f[k] = i, uz[i] = 1;
GenAranjamente(k+1);
uz[i] = 0;
}
}
double Factorial(int n, int k)
{
double v = 1;
for(int i = n - k + 1; i <= n; i++)
v *= i;
return v;
}
int main()
{
Read();
GenAranjamente(1);
atacuri = Factorial(n, m);
out << setprecision(6) << fixed;
out << total_permutari / atacuri;
return 0;
}