Pagini recente » Cod sursa (job #3208166) | Cod sursa (job #2840733) | Cod sursa (job #1527747) | Cod sursa (job #227883) | Cod sursa (job #642980)
Cod sursa(job #642980)
#include<stdio.h>
using namespace std;
int n,m,stiva[100];
double probabilitati[100],suma=0;
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*2);
}
else
{
if(k>0)
stiva[k]=stiva[k-1];
else
stiva[k]=-1;
while(stiva[k]<n-m+k)
{
stiva[k]++;
back(k+1);
}
}
}
float factorial(int n)
{
int i;
float fact=1;
for(i=1; i<=n; i++)
fact=fact*i;
return fact;
}
int main()
{
FILE *in,*out;
int i;
in=fopen("dezastru.in","r");
out=fopen("dezastru.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;
}