Pagini recente » Cod sursa (job #2384937) | Cod sursa (job #707061) | Cod sursa (job #1191082) | Cod sursa (job #93190) | Cod sursa (job #80624)
Cod sursa(job #80624)
#include <stdio.h>
#define NMAX 26
long int n,i,j,k,nr,x;
long int prim[NMAX];
double a[NMAX][NMAX],v[NMAX],sol;
int main()
{
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%ld %ld",&n,&k);
for (i=1;i<=n;i++)
scanf("%lf",&v[i]);
a[1][1]=v[1];
for (i=1;i<=n;i++)
a[i][0]=1;
for (i=2;i<=n;i++)
for (j=1;j<=i;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1]*v[i];
for (x=2,nr=2;x<=n;x++,nr=x)
for (i=2;i<=nr;i++)
for (;nr%i==0;) {nr/=i;prim[i]++;}
for (x=2,nr=2;x<=k;x++,nr=x)
for (i=2;i<=nr;i++)
for (;nr%i==0;) {nr/=i;prim[i]--;}
nr=n-k;
for (x=2,nr=2;x<=n-k;x++,nr=x)
for (i=2;i<=nr;i++)
for (;nr%i==0;) {nr/=i;prim[i]--;}
nr=1;
for (i=1;i<=n;i++)
for (;prim[i];prim[i]--)
nr=nr*i;
sol=a[n][k]/nr;
printf("%.6lf",sol);
return 0;
}