Pagini recente » Cod sursa (job #726090) | Cod sursa (job #2324281) | Istoria paginii utilizator/negreavlad00 | Cod sursa (job #1189235) | Cod sursa (job #654013)
Cod sursa(job #654013)
#include<stdio.h>
#include<fstream>
using namespace std;
FILE *f = fopen("dezastru.in","r");
FILE *g = fopen("dezastru.out","w");
#define MaxN 29
int N,K,nr,V[MaxN];
double S,A[MaxN],B[MaxN][MaxN];
inline void back(int k,int x,float s) //Nu merge de 100 de pct
{
for(int i=x+1;i<=N;i++)
if(k == K)
S += s*A[i],++ nr;
else
back(k+1,i,s*A[i]);
}
void PD(void)
{
for(int i=0;i<=N;i++)
B[i][0] = 1;
for(int i=1;i<=N;i++)
for(int j=1;j<=K;j++)
B[i][j] = B[i-1][j] + B[i-1][j-1]*A[i];
}
void Comb(void)
{
for(int i=1;i<=N-K;i++)
B[N][K] *= i;
for(int i=K+1;i<=N;i++)
B[N][K] /= i;
}
int main()
{
fscanf(f,"%d%d",&N,&K);
for(int i=1;i<=N;i++)
fscanf(f,"%lf",&A[i]);
PD();
Comb();
fprintf(g,"%.6lf\n",B[N][K]);
fclose(f);
fclose(g);
return 0;
}