Cod sursa(job #80624)

Utilizator devilkindSavin Tiberiu devilkind Data 28 august 2007 21:13:10
Problema Dezastru Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#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;
}