Pagini recente » Cod sursa (job #1968970) | Cod sursa (job #1593770) | Cod sursa (job #2182874) | Cod sursa (job #1558815) | Cod sursa (job #195554)
Cod sursa(job #195554)
#include<fstream>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
double p[30];
int n, k;
int nfact=0;
int x[30];
double Pg=0;
/*int verif(int lim){
int i;
for(i=1;i<lim;i++)
if(x[lim]==x[i])
return 0;
return 1;
}
void scrie(){
double Pl=1.0;
int i;
for(i=1;i<=k;i++)
Pl*=p[x[i]];
Pg+=Pl;
nfact++;
} */
void back(int i, double Pc){
int j,lim=n-k+i+1;
double pl=1.0;
for(j=x[i-1]+1;j<lim;j++)
{
x[i]=j;
pl=Pc*p[x[i]];
if(i==k){ Pg+=pl;nfact++;}
else back(i+1,pl);
}
}
int main(){
int i;
f>>n>>k;
for(i=1;i<=n;i++)
f>>p[i];
back(1,1.0);
double rez = Pg/nfact;
g<<rez<<'\n';
f.close();
g.close();
return 0;
}