Pagini recente » Cod sursa (job #1924553) | Cod sursa (job #2881445) | Cod sursa (job #1929256) | Cod sursa (job #450387) | Cod sursa (job #438015)
Cod sursa(job #438015)
#include <stdio.h>
int st[30];
float prob[30], s, p;
int n, K, i, j;
int k, AS;
long long fact;
long long factorial (int n)
{
long long fa = 1;
for (j=2; j<=n; ++j)
fa *= j;
return fa;
}
int e_valid (int k, int st[100])
{
for (i=1; i<k; ++i)
if (st[k] == st[i])
return 0;
return 1;
}
float back (int k)
{
if (k == K + 1)
{
/*for (i=1; i<=K; ++i)
printf ("%d ", st[i]);
printf ("\n");*/
p = 1;
for (i=1; i<=K; ++i)
p *= prob[st[i]];
p *= 2;
p /= fact;
s += p;
}
else
{
if (k == 1)
st[k] = 0;
else
st[k] = st[k-1];
while (st[k] < n)
{
st[k] ++;
back (k + 1);
}
}
return s;
}
int main()
{
FILE *f = fopen ("dezastru.in","r");
FILE *g = fopen ("dezastru.out","w");
fscanf (f,"%d %d", &n, &K);
for (i=1; i<=n; ++i)
fscanf (f,"%f", &prob[i]);
fact = factorial (n);
fprintf (g,"%6f", back (1));
fclose(g);
fclose(f);
return 0;
}