Pagini recente » Monitorul de evaluare | Cod sursa (job #2436972) | Cod sursa (job #2429871) | Cod sursa (job #2436974) | Cod sursa (job #2422387)
#include<fstream>
#include<iomanip>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int n, k, x[30], number;
double fract[30], suma;
void back(int l) {
if (l == k) {
number++;
double produs = 1;
for (int i = 1; i <= k; ++i)
produs *= fract[x[i]];
suma += produs;
} else {
for (int i = x[l] + 1; i <= n; ++i)
{x[l + 1] = i;
back(l + 1);}
}
}
int main() {
fin >> n >> k;
for (int i = 1; i <= n; ++i)
fin >> fract[i];
back(0);
fout << setprecision(6) << suma / number;
fin.close();
fout.close();
return 0;
}