Pagini recente » Cod sursa (job #1552732) | Cod sursa (job #1548397) | Cod sursa (job #1814550) | Cod sursa (job #1542336) | Cod sursa (job #2776585)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
#define cin f
#define cout g
const int Max = 26;
int n,k;
double a[Max];
void read()
{
f>>n>>k;
int i;
for(i=1;i<=n;i++)
{
f>>a[i];
}
}
vector< double > prob;
int choose[Max];
long double ans = 0;
void generate_bkt(int current,double choose_product)
{
if(current == k + 1)
{
ans += choose_product;
return;
}
for(int i = choose[current - 1] + 1;i<=n;i++)
{
choose[current] = i;
generate_bkt(current + 1,choose_product * a[i]);
}
}
void solve()
{
double C;
int i;
C = 1;
for (i = 1; i <= k; i++)
C *= i;
for (i = n - k + 1; i <= n; i++)
C = C * 1.0 / i;
generate_bkt(1,1);
ans *= C;
cout<<fixed<<setprecision(10)<<ans<<'\n';
}
int32_t main()
{
read();
solve();
return 0;
}