Pagini recente » Istoria paginii runda/jbprep1/clasament | Monitorul de evaluare | Diferente pentru warm-up-2019/solutii/shoturi intre reviziile 20 si 19 | Diferente pentru autumn-warmup-2007/solutii/runda-3 intre reviziile 53 si 22 | Cod sursa (job #2013090)
#include<stdio.h>
#define MAXN 26
void bkt(int cap,int size);
double lgput(double a,int b)
{
if(b==0)
{
return 1;
}
if(b==1)
{
return a;
}
double r=1;
while(b>1)
{
if(b%2==0)
{
a*=a;
}
else
{
r*=a;
a*=a;
}
b/=2;
}
return r*a;
}
FILE*fin,*fout;
double prob[MAXN];
int v[MAXN];
int fact;
int N,K;
double sum=0;
int main()
{
fin=fopen("dezastru.in","r");
fout=fopen("dezastru.out","w");
fscanf(fin,"%d%d",&N,&K);
for(int i=1;i<=N;i++)
{
fscanf(fin,"%lf",&prob[i]);
}
bkt(1,1);
for(int i=K+1;i<=N;i++)
{
sum/=i;
}
fprintf(fout,"%lf",sum);
fclose(fin);
fclose(fout);
return 0;
}
void bkt(int cap,int size)
{
if(size==K+1)
{
double prod=1;
for(int i=1;i<=K;i++)
{
prod*=prob[v[i]];
}
sum+=prod;
return;
}
for(int i=cap;i<=N;i++)
{
v[size]=i;
bkt(i+1,size+1);
}
}