Cod sursa(job #698892)

Utilizator RoswenRus Alexandru Roswen Data 29 februarie 2012 16:33:53
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<stdio.h>
FILE *f=fopen("dezastru.in","r"), *g=fopen("dezastru.out","w");
int n, k;
float a[27][27], v[30], r;

double combinari(int n, int k)
{
	double p=1;
	for(int i=n-k;i<=n;i++)
		p=p*i;
	for(int i=1;i<=k;i++)
		p=p/i;
	return p;
}
void rez()
{
	for(int i=0;i<=n;i++)
		a[i][0]=1;
	
	for(int i=1;i<=n;i++)
		for(int j=1;j<=k && j<=i;j++)
			a[i][j]=a[i-1][j]+a[i-1][j-1]*v[i];
}

int main()
{
	fscanf(f,"%d%d", &n, &k);
	for(int i=1;i<=n;i++)
		fscanf(f,"%f", & v[i]);
	
	rez();
	double x=combinari(n,k);
	fprintf(g,"%.6f", a[(int)n][(int)k]/x);
	return 0;
}