Cod sursa(job #482545)

Utilizator SzabiVajda Szabolcs Szabi Data 3 septembrie 2010 20:41:28
Problema Dezastru Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb

#include <stdio.h>

int n,k,v[27],nfact,nkfact,kfact;
float a[27],sum=0;

int fact(int p){
int i,temp=1;

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

return temp;

}


void kiir(){
int i;

for(i=1;i<=k;i++){printf("%f ",a[v[i]]);}

printf("\n");
}


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

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

temp*=kfact*nkfact;
sum+=temp;
}

void back(int p){
int 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);
int i;
scanf("%d %d",&n,&k);
for(i=1;i<=n;i++){scanf("%f",&a[i]);}

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

back(1);

sum/=nfact;

printf("%f",sum);

	return 0;}