Pagini recente » Cod sursa (job #653591) | Cod sursa (job #1383631) | Cod sursa (job #2786540) | Cod sursa (job #1948769) | Cod sursa (job #1621044)
#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;
}
int fact(int n)
{int i,p=1;
for(i=2;i<=n;i++)
p=p*i;
return p;
}
void valid()
{ev=1;
int i;
for(i=1;i<k;i++)
if(x[i]>=x[i+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]]*fact(k1);
s=s+p;
}
int main()
{ fstream f("dezastru.in",ios::in);
f>>n>>k1;
for(int i=1;i<=n;i++)
f>>v[i];
int i,j,a[27][27];
for(i=0;i<=n;i++)
{a[i][0]=1;
a[i][i]=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/fact(n);
g<<fixed<<setprecision(6)<<s;
g.close();
}