Cod sursa(job #229556)
| Utilizator | Data | 10 decembrie 2008 18:48:14 | |
|---|---|---|---|
| Problema | Dezastru | Scor | 50 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.59 kb |
#include <stdio.h>
int n, k, st[26];
long nr=0;
float v[26], P=0, p=1;
char fol[26]={0};
void back(int in)
{
int i;
for (i=1; i<=n; i++)
{
if (fol[i]==0)
{
st[in]=i;
fol[i]=1;
p*=v[st[in]];
if (in<k) back(in+1);
else
{
P+=p;
nr++;
}
fol[i]=0;
p/=v[st[in]];
}
}
}
int main()
{
int i;
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
scanf("%d %d\n", &n, &k);
for (i=1; i<=n; i++) scanf("%f ", &v[i]);
back(1);
printf("%6f\n", P/nr);
return 0;
}
