Pagini recente » Cod sursa (job #2261946) | Cod sursa (job #374468) | Cod sursa (job #782456) | Cod sursa (job #501044) | Cod sursa (job #2003246)
#include <iomanip>
#include <fstream>
using namespace std;
double sum = 0;
double v[30];
int n, m, st[30];
bool viz[30];
long long nFact = 1;
void Calculate(int )
{
for (int i = 1;i <= n;i++)
nFact = 1LL * nFact * i;
}
void Read()
{
ifstream f("dezastru.in");
f >> n >> m;
for (int i = 1;i <= n;i++)
f >> v[i];
f.close();
}
void Solution()
{
double s = 1;
for (int i = 1;i <= m;i++)
s *= v[st[i]];
sum += s;
}
void Back(int k)
{
if (k > m)
{
Solution();
/*for (int i = 1;i <= m;i++)
cout << v[st[i]] << " ";
cout << "\n";*/
return;
}
for(int i = 1;i <= n;i++)
if (!viz[i])
{
viz[i] = true;
st[k] = i;
Back(k + 1);
viz[i] = false;
}
}
void Write()
{
ofstream g("dezastru.out");
g << setprecision(6) << sum / nFact << "\n";
g.close();
}
int main()
{
Read();
Back(1);
Calculate(n);
Write();
return 0;
}