Pagini recente » Cod sursa (job #3263212) | Diferente pentru implica-te/arhiva-educationala intre reviziile 223 si 52 | Cod sursa (job #2846102) | Cod sursa (job #77473) | 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;
}