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