Pagini recente » Cod sursa (job #2392112) | Cod sursa (job #1089927) | Cod sursa (job #95243) | Cod sursa (job #3169972) | Cod sursa (job #1504793)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("dezastru.in");
ofstream out("dezastru.out");
const int maxn = 30;
double v[maxn];
int k, n;
double dp[maxn][maxn];
int fact(int n)
{
if(n == 1)
return 1;
return n * fact(n - 1);
}
int comb(int n, int k)
{
if(k == 1)
return n;
if(n == k)
return 1;
return comb(n - 1, k) + comb(n - 1, k - 1);
}
int main()
{
in >> n >> k;
for(int i = 1; i <= n; i++)
in >> v[i];
for(int i = 0 ; i <= n ; ++ i)
dp[i][0] = 1;
for(int i = 1 ; i <= n ; ++ i)
for(int j = 1 ; j <= min(i, k) ; ++ j)
dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1] * v[i];
out << dp[n][k] / comb(n, k) << '\n';
return 0;
}