Cod sursa(job #38030)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 25 martie 2007 14:28:49
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include <stdio.h>

#define FOR(i,s,d) for(i=(s);i<(d);++i)

int n,k;
double P[32],sol=0,A[32][32];

double comb(int n,int k)
{
	double aux=1;
	int i;
	FOR(i,k+1,n+1)
		aux*=i;
	FOR(i,2,n-k+1)
		aux/=i;
	return aux;
}

int main()
{
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	int i,j;
	scanf("%d %d",&n,&k);
	FOR(i,0,n)
		scanf("%lf",&P[i]);
	A[0][0]=1;
	A[0][1]=P[0];
	FOR(i,1,n)
	{
		A[i][0]=1;
		FOR(j,1,k+1)
			A[i][j]=A[i-1][j]+P[i]*A[i-1][j-1];
	}
	printf("%lf\n",A[n-1][k]/comb(n,k));
	return 0;
}