Pagini recente » Cod sursa (job #1809011) | Cod sursa (job #244398) | Cod sursa (job #2645347) | Cod sursa (job #717587) | Cod sursa (job #3196559)
#include <fstream>
#include <iomanip>
using namespace std;
const int NMAX = 26;
int N, K;
double fact, P[NMAX], sol;
bool viz[NMAX];
ifstream f("dezastru.in");
ofstream g("dezastru.out");
void BT(int k, double prod)
{
for (int i = 1; i <= N; i++)
if(viz[i] == 0)
{
viz[i] = 1;
prod *= P[i];
if(k == K)
sol += prod * fact;
else
BT(k + 1, prod);
viz[i] = 0;
prod /= P[i];
}
}
int main()
{
fact = 1.0;
f >> N >> K;
for (int i = 1; i <= N; i++)
{
f >> P[i];
fact *= i;
}
fact = 1.0 / fact;
BT(1, 1.0);
g << fixed << setprecision(6) << sol << '\n';
f.close();
g.close();
return 0;
}