Pagini recente » Cod sursa (job #2346953) | Cod sursa (job #2205706) | Cod sursa (job #2925708) | Cod sursa (job #2666381) | Cod sursa (job #1470955)
#include <bits/stdc++.h>
using namespace std;
int n, st[30], k, v[30];
double a[50], solutie;
double fact[30];
void Citire()
{
int i;
ifstream fin("dezastru.in");
fin >> n >> k;
for (i = 1; i <= n; ++i)
fin >> a[i];
fin.close();
fact[0] = fact[1] = 1;
for (i = 2; i <= n; ++i)
fact[i] = fact[i-1] * i;
}
void Calcul()
{
int i;
double prob = 1;
for (i = 1; i <= k; i++)
prob *= a[st[i]];
//for (i = 1; i <= k; i++)
// cout << st[i] << " ";
//cout << " ---" << prob << "\n";
solutie += (prob * fact[n-k]);
}
void Back(int top)
{
int i;
if (top == k + 1) Calcul();
else for (i = 1; i <= n; ++i)
if (!v[i])
{
v[i] = 1;
st[top] = i;
Back(top + 1);
v[i] = 0;
}
}
void Afisare()
{
ofstream fout("dezastru.out");
solutie /= fact[n];
fout << fixed << setprecision(6) << solutie << "\n";
fout.close();
}
int main()
{
Citire();
Back(1);
Afisare();
return 0;
}