Pagini recente » Cod sursa (job #2687283) | Cod sursa (job #3255835) | Cod sursa (job #2335913) | Cod sursa (job #281209) | Cod sursa (job #79211)
Cod sursa(job #79211)
# include <stdio.h>
const long int NRB=25;
const long int MAXN=1<<NRB;
long int nrb[MAXN+1],n,k;
float p[MAXN+1],s,v[NRB+1];
void citire()
{
FILE *f=fopen("dezastru.in","r");
fscanf(f,"%ld%ld",&n,&k);
long int i;
for (i=1;i<=n;i++) fscanf(f,"%f",&v[i]);
fclose(f);
}
void scrie(float sol)
{
FILE *g=fopen("dezastru.out","w");
fprintf(g,"%-.6f\n",sol);
fcloseall();
}
int main()
{
citire();
p[0]=1;nrb[0]=0;
long int i,j,q,t,pos,max=(1<<n)-1;
for (i=1;i<=max;++i)
{
q=i&(~(i-1));
t=q;
nrb[i]=nrb[i-q]+1;
pos=0;
while (q) {pos++;q>>=1;}
p[i]=p[i-t]*v[pos];
if (nrb[i]==k) s+=p[i];
}
long long int c[30][30]={0};
c[0][0]=1;
for (i=1;i<=n;i++)
{
c[i][0]=1;
for (j=1;j<=k;j++)
c[i][j]=c[i-1][j]+c[i-1][j-1];
}
scrie(s/c[n][k]);
return 0;
}