Pagini recente » Cod sursa (job #525165) | Cod sursa (job #229458) | Cod sursa (job #1086272) | Cod sursa (job #1699928) | Cod sursa (job #438001)
Cod sursa(job #438001)
#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 Am_Succesor ()
{
if (st[k] < n)
{
st[k] ++;
return 1;
}
return 0;
}
int E_Valid ()
{
for (i=1; i<k; ++i)
if (st[k] == st[i])
return 0;
return 1;
}
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);
k = 1;
st[k] = 0;
while (k > 0)
{
do
{ }
while ( (AS = Am_Succesor()) && !E_Valid () );
if (AS)
{
if (k == n)
{
p = 1;
for (i=1; i<=K; ++i)
p *= prob[st[i]];
p /= 6;
s += p;
//printf ("%f \n", p);
}
else
{
k ++;
st[k] = 0;
}
}
else
k --;
}
//printf ("rez = %f", s);
fprintf (g,"%6f", s);
fclose(g);
fclose(f);
return 0;
}