Cod sursa(job #726779)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 27 martie 2012 15:20:11
Problema Dezastru Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include<cstdio>
int count(int n) 
{
    int num=0;
    if(n)
        do num++; while(n&=n-1);
    return num;
}
int main()
{
	int i,n,max,k,nr=0,j;
	float sum=0,a[30],p;
    freopen("dezastru.in","r",stdin);
    freopen("dezastru.out","w",stdout);
    scanf("%d %d",&n,&k);
    for(int i=1;i<=n;i++) scanf("%f",&a[i]);
    max=1<<n;
	for(i=1;i<max;i++)
	{
		if(count(i)==k)
		{
			p=1;
			for(j=1;j<=n;j++)
			{
				if(i&(1<<(j-1))) p=p*a[j];
			}
			sum+=p;
			nr++;
		}
	}
    printf("%.6f",(float)(sum/nr));
}