Cod sursa(job #391404)

Utilizator ooctavTuchila Octavian ooctav Data 5 februarie 2010 17:15:00
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>
#define NMAX 30
#define KMAX NMAX
int N,K;
float val[NMAX];
float a[NMAX][KMAX];
long long fact[NMAX][KMAX];

void citire()
{
	scanf("%d %d",&N,&K);
	for(int i=1;i<=N;i++)
		scanf("%f",&val[i]);
}

void combinari()
{
	for(int i=1;i<=N;i++)
		fact[i][1]=i;
	for(int i=1;i<=N;i++)
		for(int j=2;j<=K;j++)
			fact[i][j]=i*fact[i-1][j-1]/j;
}

void constructie()
{
	for(int i=1;i<=N;i++)
	{
		a[i][1]=a[i-1][1]+val[i];
		for(int j=2;j<=K;j++)
			a[i][j]=a[i-1][j-1]*val[i]+a[i-1][j];
	}
}

int main()
{
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	citire();
	combinari();
	constructie();
	printf("%f",a[N][K]/fact[N][K]);
	
	
	return 0;
}