Cod sursa(job #286655)

Utilizator titusuTitus C titusu Data 23 martie 2009 23:37:10
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>

FILE *fin=fopen("dezastru.in","r");
FILE *fout=fopen("dezastru.out","w");
int x[30], n, k, nrsol;
double p[30],suma=0;

double a[30][30];

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

long comb(int n,int k)
{
  long produs=1;
  for(int i=1;i<=k;i++)
    produs = produs * (n-i+1) / i;
  return produs;
}

int main()
{
	fscanf(fin,"%d%d",&n, &k);
	for(int i=1;i<=n;i++)
		fscanf(fin,"%lf",p+i);
	makeA();
	
	fprintf(fout,"%.7lf",a[n][k]/ comb(n,k));
	return 0;
}