Pagini recente » Cod sursa (job #1069550) | Cod sursa (job #2759445) | Cod sursa (job #3267703) | Cod sursa (job #1265609) | Cod sursa (job #2493424)
#include <fstream>
using namespace std;
ifstream fin ("dezastru.in");
ofstream fout ("dezastru.out");
int n, k, st[26], nr;
double v[26], p, s;
int validare(int niv)
{
for(int i=1;i<niv;i++)
{
if(st[niv]==st[i])
return 0;
}
return 1;
}
void tipar(int niv)
{
p=1;
for(int i=1;i<=k;i++)
{
p=p*v[st[i]];
}
s=s+p;
p=1;
for(int i=k; i>=1; i--)
{
p=p*v[st[i]];
}
s=s+p;
}
void bck (int niv)
{
int i;
for(i=st[niv-1]+1;i<=n;i++)
{
st[niv]=i;
if(validare(niv)==1)
{
if(niv==k)
{
tipar(niv);
}
else
bck(niv+1);
}
}
}
int factorial(int n)
{
if(n > 1)
return n * factorial(n - 1);
else
return 1;
}
int main()
{
int i;
fin>>n>>k;
s=0;
for(i=1;i<=n;i++)
{
fin>>v[i];
}
bck(1);
nr=factorial(n);
fout<<s/nr;
return 0;
}