Pagini recente » Cod sursa (job #3241273) | Cod sursa (job #474365) | Cod sursa (job #3180875) | Cod sursa (job #879020) | Cod sursa (job #286655)
Cod sursa(job #286655)
#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;
}