Pagini recente » Cod sursa (job #1690638) | Cod sursa (job #104754) | Cod sursa (job #2870313) | Cod sursa (job #2778328) | Cod sursa (job #2507053)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int N, K;
float p[30];
float P = 1, rez = 0, Pt=1;
bool viz[30];
int ct;
void Back(int top, bool mode) {
if (top == K + 1) {
if(mode==0) {
rez += P;
ct++;
}
else {
rez += Pt/P;
ct++;
}
// cout << P << "\n";
} else
for (int i = 1; i <= N; i++) {
if (viz[i] == 0) {
viz[i] = true;
P *= p[i];
Back(top + 1,mode);
P /= p[i];
viz[i] = false;
}
}
}
int main() {
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
fin >> N >> K;
for (int i = 1; i <= N; i++) {
fin >> p[i];
Pt*=p[i];
}
if (K <= N / 2) {
Back(1, false);
fout << fixed << setprecision(6) << rez / (float) ct;
}
else {
K=N-K;
Back(1,true);
fout << fixed << setprecision(6) <<rez / (float) ct;
}
}