Pagini recente » Cod sursa (job #2513175) | Cod sursa (job #716391) | Cod sursa (job #1487888) | Cod sursa (job #1459880) | Cod sursa (job #3196067)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
double P[30];
int sol[30]; // vectorul de solutii pentru BT;
int N, K;
double val = 0.0;
void prelucrare()
{
double res = 1.0;
for (int i = 1; i <= K; i++)
res = res * P[sol[i]];
val += res;
}
void BT(int i)
{
if (i > K)
prelucrare();
else
{
for (int j = sol[i - 1] + 1; j <= N; j++)
{
sol[i] = j;
BT(i + 1);
}
}
}
int main()
{
double nFact = 1.0;
double n_kFact = 1.0;
double kFact = 1.0;
sol[0] = 0; /// artificiu;
///
f >> N >> K;
for (int i = 1; i <= N; i++)
{
f >> P[i];
nFact *= i;
}
//
for (int i = 1; i <= K; i++)
kFact = kFact * i;
//
for (int i = 1; i <= N - K; i++)
n_kFact *= i;
//
BT(1);
//
val = val * kFact * n_kFact / nFact;
g << fixed << setprecision(6) << val << '\n';
return 0;
}