Cod sursa(job #38369)

Utilizator astronomyAirinei Adrian astronomy Data 25 martie 2007 18:31:07
Problema Dezastru Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.93 kb
#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;
}