Pagini recente » Cod sursa (job #1720028) | Cod sursa (job #1527301) | Cod sursa (job #3137750) | Cod sursa (job #2162922) | Cod sursa (job #2493413)
#include<fstream>
#include<iomanip>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int p,st[30],niv,n,m;
double v[30],s,nrapp;
int fac(int x)
{
int nr=1;
for(int i=1;i<=x;i++) nr*=i;
return nr;
}
double rezolv(int niv)
{
double p=1;
int i;
for(i=1;i<=niv;i++)
{
p=p*(v[st[i]]);
}
return p;
}
int validare(int niv)
{
int i;
for(i=1;i<niv;i++)
if(st[i]==st[niv]) return 0;
return 1;
}
void bkt(int niv)
{
int i;
for(i=st[niv-1]+1;i<=n;i++)
{
st[niv]=i;
if(validare(niv))
{
if(m==niv)
{
s=s+(fac(m)*(rezolv(niv)/nrapp));
}
else bkt(niv+1);
}
}
}
int main()
{
fin>>n>>m;
nrapp=1;
for(int i=2;i<=n;i++)
{
nrapp*=i;
}
for(int i=1;i<=n;i++)
{
fin>>v[i];
}
bkt(1);
fout<<fixed<<setprecision(6)<<s;
}