Cod sursa(job #438051)
| Utilizator | Data | 10 aprilie 2010 14:16:44 | |
|---|---|---|---|
| Problema | Dezastru | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.54 kb |
#include <stdio.h>
int N, K;
int i;
long int fact;
double prob[30], S;
void back (int k, double x, int last)
{
if (k == K + 1)
{
S += x;
fact ++;
}
else
{
for (i=last + 1; i<= N - K + k; ++i)
back (k + 1, x * prob[i], i);
}
}
int main()
{
FILE *f = fopen ("dezastru.in", "r");
FILE *g = fopen ("dezastru.out", "w");
fscanf (g,"%d %d", &N, &K);
for (i=1; i<=N; ++i)
fscanf (g,"%lf", &prob[i]);
back(1, 1, 0);
fprintf(g, "%lf\n", S / fact);
fclose(g);
fclose(f);
return 0;
}
