Cod sursa(job #783940)

Utilizator MtkMarianHagrSnaf MtkMarian Data 4 septembrie 2012 16:12:28
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<cstdio>
using namespace std;
long long Combinations(unsigned int n, unsigned int k)
{
     if (k > n)
         return 0;
     long long r = 1;
     for (unsigned int d = 1; d <= k; ++d)
     {
         r *= n--;
         r /= d;
     }
     return r;
}

int main()
{
	freopen("dezastru.in","r",stdin);
	freopen("dezastru.out","w",stdout);
	int n,k;
	float p[30],a[32][32]={0},rez1;
	long long rez=1;

	scanf("%d %d",&n,&k);
	for(int i=1;i<=n;++i)
	{
		scanf("%f",&p[i]);
	}

	for(int i=0;i<n;i++)
 a[i][0]=a[i][i]=1;
	
	for(int i=1;i<=n;++i)
		for(int j=1;j<=i;++j)
		{
			a[i][j]=(a[i-1][j]+a[i-1][j-1]*p[i]);

		}
		rez=Combinations(n,k);
		//printf("%lld",rez);
		rez1=(float)a[n][k]/rez;

printf("%.6f\n",rez1);
	return 0;
}