Pagini recente » Cod sursa (job #2373341) | Cod sursa (job #2442306) | Cod sursa (job #3274590) | Cod sursa (job #2486542) | Cod sursa (job #642993)
Cod sursa(job #642993)
#include<stdio.h>
using namespace std;
int n,m,stiva[100];
double probabilitati[100],suma=0;
float factorial(int n)
{
int i;
float fact=1;
for(i=1; i<=n; i++)
fact=fact*i;
return fact;
}
void back(int k)
{
int i;
if(k==m)
{
float produs=1;
for(i=0; i<m; i++)
produs=produs*probabilitati[stiva[i]];
suma=suma+(produs*factorial(m));
}
else
{
if(k>0)
stiva[k]=stiva[k-1];
else
stiva[k]=-1;
while(stiva[k]<n-m+k)
{
stiva[k]++;
back(k+1);
}
}
}
int main()
{
FILE *in,*out;
int i;
in=fopen("new.in","r");
out=fopen("new.out","w+");
fscanf(in,"%d %d",&n,&m);
for(i=0; i<n; i++)
fscanf(in,"%lf",&probabilitati[i]);
back(0);
fprintf(out,"%.6f",suma/factorial(n));
fclose(in); fclose(out);
return 0;
}