Pagini recente » Cod sursa (job #2881628) | Cod sursa (job #658355) | Cod sursa (job #1757802) | Cod sursa (job #664931) | Cod sursa (job #1196814)
#include<stdio.h>
#include<stdlib.h>
int st[26],n,k,p,nr=0;
double prob[2000000],s=0,d[26];
void Init()
{ st[k]=0; }
int Am_Succesor() {
if(st[k]<n) {
st[k]++;
return 1;
}
return 0;
}
int E_valid(){
for(int i=1;i<k;i++)
if(st[i]==st[k]) return 0;
return 1;
}
int Solutie()
{ return k==p; }
void back(){
int AS;
k=1;Init();
while(k>0){
do {} while((AS=Am_Succesor()) && !E_valid());
if (AS)
if(Solutie()) {
nr++;
prob[nr]=1;
for(int i=1;i<=p;i++)
prob[nr]=prob[nr]*d[st[i]];
}
else { k++;Init(); }
else k--;
}
}
int main() {
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%d%d",&n,&p);
for(int i=1;i<=n;i++)
scanf("%lf",&d[i]);
back();
for(int i=1;i<=nr;i++)
s=s+prob[i];
printf("%.6lf",s/nr);
fclose(stdin);
fclose(stdout);
return 0;
}