Mai intai trebuie sa te autentifici.
Cod sursa(job #134239)
| Utilizator | Data | 11 februarie 2008 00:29:56 | |
|---|---|---|---|
| Problema | Dezastru | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.71 kb |
#include <stdio.h>
#define Nmax 26
double a[Nmax], rez;
int i, st[Nmax], n, k;
long long imp, inm;
void bkt(int i)
{
if (i>k)
{
double temp=1;
for (int j=1; j<=k; j++) temp*=a[st[j]];
rez+=temp;
}
else
{
for (int j=st[i-1]+1; j<=n; j++)
{
st[i]=j;
bkt(i+1);
}
}
}
int fac(int n)
{
for (int i=1, aaa=1; i<=n; i++) aaa*=i;
return aaa;
}
int main()
{
freopen("dezastru.in", "r", stdin);
scanf("%d %d\n", &n, &k);
for (i=1; i<=n; i++)
scanf("%lf ", &a[i]);
fclose(stdin);
freopen("dezastru.out", "w", stdout);
imp=(fac(n)/fac(k))/fac(n-k);
for (inm=1, i=1; i<=k; i++) inm*=i;
bkt(1);
printf("%.6lf\n", rez/imp);
fclose(stdout);
return 0;
}
