Pagini recente » Cod sursa (job #3266244) | Cod sursa (job #1646227) | Cod sursa (job #653421) | Monitorul de evaluare | Cod sursa (job #2718067)
#include<iostream>
#include<fstream>
using namespace std;
int n, v[26], k;
double p[26], s, fact[26], inm;
void backtr(int poz)
{
if(poz == k + 1)
{
s += inm;
return;
}
for(int i = v[poz - 1] + 1; i <= n; i++)
{
v[poz] = i;
inm *= p[i];
backtr(poz + 1);
inm /= p[i];
}
}
int main()
{
ifstream in("dezastru.in");
ofstream out("dezastru.out");
in>>n>>k;
for(int i = 1; i <=n; i++)
in>>p[i];
fact[1] = 1;
for(int i = 2; i <= n; i++)
fact[i] = fact[i-1] * i;
inm = fact[n-k] * fact[k];
backtr(1);
out<<s/fact[n];
return 0;
}