Pagini recente » Cod sursa (job #1431693) | Cod sursa (job #418001) | Cod sursa (job #1431127) | Cod sursa (job #548065) | Cod sursa (job #1450937)
#include <stdio.h>
#define MAXN 25
double p[MAXN * 1];
double sum = 0.0;
int nr = 0;
inline void calcsum(int n, int k){
int i, j;
double d[MAXN + 1][MAXN + 1];
for(i = 0; i <= n; i++)
d[i][0] = 1;
for(i = 1; i <= n; i++){
for(j = 1; j <= k && j <= i; j++){
if(i - 1 >= j)
d[i][j] = d[i - 1][j];
else
d[i][j] = 0;
d[i][j] += d[i - 1][j - 1] * p[i];
}
}
sum = d[n][k];
}
inline void calcnr(int n, int k){
long long x = 1;
int i;
if(n / 2 >= k){
for(i = n - k + 1; i <= n; i++)
x *= i;
for(i = k; i > 1; i--)
x /= i;
}
else{
for(i = k + 1; i <= n; i++)
x *= i;
for(i = n - k; i > 1; i--)
x /= i;
}
nr = x;
}
int main(){
FILE *in = fopen("dezastru.in", "r");
int n, k, i;
fscanf(in, "%d%d", &n, &k);
for(i = 1; i <= n; i++)
fscanf(in, "%lf", &p[i]);
fclose(in);
calcsum(n, k);
calcnr(n, k);
FILE *out = fopen("dezastru.out", "w");
fprintf(out, "%lf", sum / nr);
fclose(out);
return 0;
}