Pagini recente » Cod sursa (job #897285) | Cod sursa (job #2062367) | Cod sursa (job #1075496) | Cod sursa (job #2780301) | Cod sursa (job #350269)
Cod sursa(job #350269)
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
#define NMAX 105
int st[NMAX],N,K,var;
double sum=0,v[NMAX],prod=1,tot=1;
void back(int t,double re)
{
int i;
if (t == K)
{
sum += (var == 1 ? re : tot/re);
return;
}
for (i = (t == 0 ? 0 : st[t-1] + 1); i < N;i++)
st[t]=i,back(t+1,re*v[i]);
}
int main()
{
int i;
freopen("dezastru.in", "rt", stdin);
freopen("dezastru.out", "wt", stdout);
scanf("%d %d",&N,&K);
for (i=K+1;i<=N;i++)
prod *= (double)i;
for (i=1;i<=N-K;i++)
prod /= (double)i;
var = 1;
if (K > N - K)
{
K = N-K;
var = 2;
}
for (i=0;i<N;i++)
{
scanf("%lf",&v[i]);
tot *=v[i];
}
back(0,1);
sum /= prod;
printf("%.6lf\n",sum);
return 0;
}