Pagini recente » Cod sursa (job #1336123) | Cod sursa (job #1033285) | Cod sursa (job #2457030) | Cod sursa (job #2777166) | Cod sursa (job #1301476)
#include <stdio.h>
int n, k;
double val;
double v[26];
int fact[26];
short perm[26];
short uz[26];
void generare(int pos);
double calcul();
int main() {
int i;
FILE *fin = fopen("dezastru.in", "r");
fscanf(fin, "%d%d", &n, &k);
for (i = 1; i <= n; i++)
fscanf(fin, "%lf", &v[i]);
fclose(fin);
fact[1] = 1;
for (i = 2; i <= n; i++)
fact[i] = fact[i - 1] * i;
generare(1);
FILE *fout = fopen("dezastru.out", "w");
fprintf(fout, "%.6lf", val);
fclose(fout);
return 0;
}
void generare(int pos) {
int i;
if (pos == k + 1) {
val += calcul();
} else {
for (i = 1; i <= n; i++) {
if (uz[i] == 0) {
uz[i] = 1;
perm[pos] = i;
generare(pos + 1);
uz[i] = 0;
}
}
}
}
double calcul() {
int i;
double prod = 1;
for (i = 1; i <= k; i++)
prod *= v[perm[i]];
return prod / fact[n];
}