Pagini recente » Cod sursa (job #904149) | Cod sursa (job #1884457) | Cod sursa (job #1649721) | Cod sursa (job #1898636) | Cod sursa (job #1092485)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int x[500];
int m;
int n;
float citite[500];
float suma=0;
float fact=0;
fstream fin("dezastru.in",ios::in);
fstream fout("dezastru.out",ios::out);
void init(int k)
{
x[k]=0;
}
int factorial(int n)
{
return (n == 1 || n == 0) ? 1 : factorial(n - 1) * n;
}
bool exista(int k)
{
return x[k]<n;
}
bool cont(int k)
{
for (int i=1;i<k;i++)
{
if (x[k]==x[i])
{
return false;
}
}
return true;
}
bool solutie(int k)
{
return k==n;
}
void afis(int k)
{
float temp=1;
for (int i=1;i<=m;i++)
{
temp*=citite[x[i]];
}
suma+=(temp*(1/fact));
}
void back()
{
int k=1;
init(k);
while(k)
if (exista(k))
{
x[k]++;
if (cont(k))
if (solutie(k))
{
afis(k);
}
else
{
k++;
init(k);
}
}
else
k--;
}
int main()
{
fin >> n >> m;
fact=factorial(n);
for (int i=1;i<=n;i++)
{
fin >> citite[i];
}
back();
fout <<setprecision(6)<< suma;
return 0;
}