Pagini recente » Cod sursa (job #2818983) | Cod sursa (job #2250954) | Cod sursa (job #823617) | Cod sursa (job #101109) | Cod sursa (job #2567358)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int N, K;
long double a[30];
vector < long double > P;
long double x, R;
long double prod = 1;
int ct;
int mex;
void Back( int k )
{
for( int i = mex+1; i <= N; ++i )
{
//cout << a[i]<< ' ';
int c = mex;
x = x*a[i];
mex = i;
if( k == K )
{R += x;ct++;}
else Back( k+1 );
mex = c;
x = x/a[i];
}
}
void Back2( int k )
{
for( int i = mex+1; i <= N; ++i )
{
//cout << a[i]<< ' ';
int c = mex;
x = x*a[i];
mex = i;
if( k == K )
{R += prod/x;ct++;}
else Back2( k+1 );
mex = c;
x = x/a[i];
}
}
void Solve()
{
fin >> N >> K;
for( int i = 1; i <= N; ++i )
{fin >> a[i];prod = prod*a[i];}
x = 1;
if( K > N/2 )
{
K = N-K;
Back2( 1 );
}
else Back( 1 );
x = 0;
//fout << fixed << setprecision( 6 ) << x << '\n';
R = R/ct;
fout << fixed << setprecision( 6 ) << R;
}
int main()
{
Solve();
return 0;
}