Cod sursa(job #134239)

Utilizator coderninuHasna Robert coderninu Data 11 februarie 2008 00:29:56
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#define Nmax 26

double a[Nmax], rez;
int i, st[Nmax], n, k;
long long imp, inm;

void bkt(int i)
{
	if (i>k)
	{
		double temp=1;
		for (int j=1; j<=k; j++) temp*=a[st[j]];
		rez+=temp;
	}
	else
	{
		for (int j=st[i-1]+1; j<=n; j++)
		{
			st[i]=j;
			bkt(i+1);
		}
	}
}

int fac(int n)
{
	for (int i=1, aaa=1; i<=n; i++) aaa*=i;
	return aaa;
}


int main()
{
	freopen("dezastru.in", "r", stdin);
	scanf("%d %d\n", &n, &k);
	for (i=1; i<=n; i++)
		scanf("%lf ", &a[i]);
	fclose(stdin);
	freopen("dezastru.out", "w", stdout);
	imp=(fac(n)/fac(k))/fac(n-k);
	for (inm=1, i=1; i<=k; i++) inm*=i;
	bkt(1);
	printf("%.6lf\n", rez/imp);
	fclose(stdout);
	return 0;
}