Pagini recente » Cod sursa (job #2467431) | Cod sursa (job #2216156) | Cod sursa (job #445636) | Cod sursa (job #3255738) | Cod sursa (job #1821933)
#include <cstdio>
long long factorial(int n) {
long long rez;
rez = 1LL;
for(int i = 2; i <= n; ++i)
rez = rez * i;
return rez;
}
const int MAX_N = 25;
double rez, v[MAX_N];
int ramas[MAX_N];
inline void swap(int &a, int &b) {
int aux;
aux = a;
a = b;
b = aux;
}
void bkt(int i, int n, int k, double prod) {
if(i == k)
rez = rez + prod;
else {
for(int j = 0; j < n; ++j) {
swap(ramas[j], ramas[n - 1]);
bkt(i + 1, n - 1, k, prod * v[ramas[n - 1]]);
swap(ramas[j], ramas[n - 1]);
}
}
}
int main() {
int n, k;
double comb;
FILE *fin = fopen("dezastru.in", "r");
fscanf(fin, "%d%d", &n, &k);
for(int i = 0; i < n; ++i) {
fscanf(fin, "%lf", &v[i]);
ramas[i] = i;
}
fclose(fin);
comb = factorial(n) / factorial(n - k);
bkt(0, n, k, 1.0f / comb);
FILE *fout = fopen("dezastru.out", "w");
fprintf(fout, "%lf", rez);
fclose(fout);
return 0;
}