Cod sursa(job #481502)

Utilizator SzabiVajda Szabolcs Szabi Data 31 august 2010 19:52:22
Problema Dezastru Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <stdio.h>

typedef long long tipus;

tipus v[26],n,k,kfact,nmkfact,nfact;
float a[26],ossz=0;

tipus fact(tipus k){
tipus i,temp=1;

for(i=2;i<=k;i++){
	temp=temp*i;}
return temp;
}


void osszead(){
float temp=1;
tipus i;

for(i=1;i<=k;i++){temp=temp*a[v[i]];}

ossz+=((temp/nfact)*kfact*nmkfact);

}



void back(tipus p){
tipus i;

for(i=v[p-1]+1;i<=n;i++){
v[p]=i;

if(p==k){osszead();}else{back(p+1);}

}

}

int main(){
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);

tipus i;

scanf("%d %d",&n,&k);
for(i=1;i<=n;i++){scanf("%f",&a[i]);}

kfact=fact(k);
nfact=fact(n);
nmkfact=fact(n-k);


back(1);



printf("%.6f",ossz);



return  0;
}