Pagini recente » Cod sursa (job #195122) | Cod sursa (job #1924208) | Cod sursa (job #1680738) | Cod sursa (job #1726831) | Cod sursa (job #38369)
Cod sursa(job #38369)
#include <stdio.h>
#define MAXN 32
typedef long double real;
int N, K;
real A[MAXN][MAXN], P[MAXN], f_k, fn_k, f_n, res;
void solve(void)
{
int k, x, y;
for(f_k = 1, k = 2; k <= K; k++)
f_k = (real)k*f_k;
for(fn_k = 1, k = 2; k <= N-K; k++)
fn_k = (real)k*fn_k;
for(f_n = 1, k = 2; k <= N; k++)
f_n = (real)k*f_n;
for(x = 1; x <= N; x++)
A[1][x] = P[x];
for(k = 2; k <= K; k++)
for(x = 1; x <= N-k+1; x++)
for(y = x+1; y <= N; y++)
A[k][x] += P[x]*A[k-1][y];
for(x = 1; x <= N-K+1; x++)
res += A[K][x]*f_k*fn_k;
res = res / f_n;
}
int main(void)
{
freopen("dezastru.in", "rt", stdin);
freopen("dezastru.out", "wt", stdout);
int i;
scanf("%d %d\n", &N, &K);
for(i = 1; i <= N; i++)
scanf("%Lf ", &P[i]);
solve();
printf("%.6Lf\n", res);
return 0;
}