Cod sursa(job #248140)

Utilizator alexeiIacob Radu alexei Data 24 ianuarie 2009 22:53:46
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<stdio.h>
#define NMAX 32

double A[NMAX],D[NMAX][NMAX];
int N,K;

void read()
{
	scanf("%d%d\n",&N,&K);
	int i;
	for(i=1; i<=N; ++i)
		scanf("%lf",&A[i]);
}

void solve()
{
	int i,j;
	for(i=0; i<=N; ++i) D[0][i]=1;

	for(i=1; i<=K; ++i)
		for(j=1; j<=N; ++j)
			D[i][j]=D[i][j-1]+D[i-1][j-1]*A[j];
}

void show()
{
	double i=N-K+1,a1=1;
	
	for(i; i<=N; ++i)
		a1*=i;
	for(i=2; i<=K; ++i)
		a1/=i;
	//printf("%lf %lf\n",D[K][N],a1);
	printf("%.6lf\n",D[K][N]/a1);
}

int main()
{
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);

	read();
	solve();
	show();

	return 0;
}