Pagini recente » Cod sursa (job #1054396) | Cod sursa (job #1432866) | Cod sursa (job #3037553) | Cod sursa (job #1042634) | Cod sursa (job #1451033)
/*
If you can't explain it simply, you don't understand it well enough.
*/
#include <cstdio>
#include <algorithm>
using namespace std;
const int Nmax = 30;
int n , k , i , j;
double D[Nmax][Nmax] , p[Nmax];
int combinari(int n , int k)
{
int ans = 1;
for (i = k + 1; i <= n; ++i)
ans *= i;
for (i = 1; i <= n - k; ++i)
ans /= i;
return ans;
}
int main()
{
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%d %d", &n, &k);
for (i = 1; i <= n; ++i)
scanf("%lf", &p[i]);
for (i = 0; i <= n; ++i)
D[i][0] = 1;
for (i = 1; i <= n; ++i)
for (j = 1; j <= i; ++j)
D[i][j] = D[i-1][j] + D[i-1][j-1] * p[i];
printf("%.6lf", D[n][k] / combinari(n , k));
return 0;
}