Pagini recente » Cod sursa (job #678540) | Cod sursa (job #879158) | Cod sursa (job #2055896) | Cod sursa (job #2285178) | Cod sursa (job #1574426)
#include <cstdio>
#define min(a,b) (a < b ? a : b)
using namespace std;
const int nmx = 30;
int n,k;
double p[nmx],dp[nmx][nmx];
double combinari(int n1, int k1){
double val = 1;
for(int i = k1 + 1; i <= n1; ++i)
val *= i;
for(int i = 2; i <= n1 - k1; ++i)
val /= i;
return val;
}
int main(){
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
scanf("%d %d", &n, &k);
for(int i = 1; i <= n; ++i)
scanf("%lf", &p[i]);
for(int i = 1; i <= n; ++i){
dp[i][1] = p[i] + dp[i-1][1];
for(int j = 2; j <= min(i,k); ++j)
dp[i][j] = dp[i-1][j] + dp[i-1][j-1] * p[i];
}
printf("%lf\n", dp[n][k] / combinari(n,k) );
return 0;
}