Pagini recente » Cod sursa (job #188656) | Cod sursa (job #3264525) | Cod sursa (job #349717) | Cod sursa (job #2213386) | Cod sursa (job #1621518)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
fstream g("dezastru.out",ios::out);
int x[20],k,as,ev,n,k1;
float s=0,v[30];
void init()
{x[k]=0;}
void succesor()
{
if(x[k]<n)
{x[k]++;as=1;
}else as=0;
}
void valid()
{ev=1;
if(x[k]>x[k-1])
ev=0;
}
int solutie()
{return (k==k1);}
void tipar()
{int i;
float p=v[x[1]];
for(i=2;i<=k1;i++)
p=p*v[x[i]];
s=s+p;
}
int main()
{ fstream f("dezastru.in",ios::in);
int i,j,a[27][27];
f>>n>>k1;
for(i=1;i<=n;i++)
{f>>v[i];
a[i][0]=1;
a[i][i]=1;}
a[0][0]=1;
for(i=2;i<=n;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
k=1;
init();
while(k>0)
{do{succesor();
if(as)
valid();
}while((as)&&((!as)||(!ev)));
if(as)
if(solutie())
tipar();
else
{k++;init();}
else
k--;
}
s=s/(a[n][k1]);
g<<fixed<<setprecision(6)<<s;
g.close();
}