Pagini recente » Cod sursa (job #1495626) | Cod sursa (job #883597) | Cod sursa (job #1309830) | Cod sursa (job #2644587) | Cod sursa (job #361678)
Cod sursa(job #361678)
#include <stdio.h>
#include <math.h>
#define Nmax 26
float a[Nmax][Nmax],v[Nmax],cnk;
int n,k,i,j;
int e[Nmax];
void make_cnk(int l,int r,int semn){
int i,d;
for(i=l;i<=r;++i){
while( i % 2 == 0) e[2]+=semn, i /=2;
for(d=3; d<=sqrt(i); d+=2)
while( i % d == 0) e[d]+=semn, i /=d;
if(i>1) e[i]+=semn;
}
}
int main(){
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;++i) scanf("%f",&v[i]);
for(i=0;i<=n;++i) a[i][0]=1;
for(i=1; i<=n; ++i)
for(j=1; j<=i; ++j)
a[i][j] = a[i-1][j] + a[i-1][j-1] * v[i];
make_cnk(k+1,n,1);
make_cnk(1,n-k,-1);
for(cnk=1,i=2;i<=n;++i)
while(e[i]) cnk *= i, e[i]--;
printf("%.6f\n",a[n][k]/cnk);
fclose(stdin); fclose(stdout);
return 0;
}