Pagini recente » Cod sursa (job #214954) | Cod sursa (job #692203) | Cod sursa (job #1648457) | Cod sursa (job #2720734) | Cod sursa (job #1238088)
#include<fstream>
#include<iostream>
#include<iomanip>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
long double N,K,nrp=1,rez;
long double v[26],subsir[26];
bool ok(int poz)
{
for (int i=1;i<poz;++i)
if (subsir[i]==subsir[poz])
return 0;
return 1;
}
void nrperm()
{
for (int i=2;i<=N;++i)
nrp*=i;
}
void calc()
{
//for (int i=1;i<=N;++i)
// cout<<subsir[i]<<' ';
//cout<<'\n';
long double prod=1;
for(int k=1;k<=K;++k)
{
prod*=v[(int)subsir[k]];
}
rez+=prod/nrp;
}
void gaseste(int poz)
{
for (int k=1;k<=N;++k)
{
subsir[poz]=k;
if (ok(poz))
{
if (poz<K)
gaseste(poz+1);
else calc();
}
}
}
int main()
{
f>>N>>K;
for (int i=1;i<=N;++i)
f>>v[i];
nrperm();
//cout<<nrp;
gaseste(1);
g<<setprecision(6)<<fixed;
g<<rez<<'\n';
f.close();g.close();
return 0;
}