Mai intai trebuie sa te autentifici.
Cod sursa(job #438044)
Utilizator | Data | 10 aprilie 2010 14:05:21 | |
---|---|---|---|
Problema | Dezastru | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.72 kb |
#include <stdio.h>
int st[26];
double prob[26], s, p;
int n, K;
int k, AS;
long int fact;
double back (int k)
{
if (k == K + 1)
{
/*for (i=1; i<=K; ++i)
printf ("%d ", st[i]);
printf ("\n");*/
fact ++;
p = 1;
for (register int i=1; i<=K; ++i)
p *= prob[st[i]];
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 (register int i=1; i<=n; ++i)
fscanf (f,"%lf", &prob[i]);
fprintf (g,"%6lf", back (1)/fact);
fclose(g);
fclose(f);
return 0;
}