Pagini recente » Cod sursa (job #465738) | Cod sursa (job #1044598) | Cod sursa (job #838247) | Cod sursa (job #1181740) | Cod sursa (job #80940)
Cod sursa(job #80940)
#include <stdio.h>
#include <math.h>
#define NMAX 30
double p[NMAX];
double a[NMAX][NMAX];
int n, k;
void read()
{
scanf("%d%d", &n, &k);
for(int i = 1; i <= n; ++i)
scanf("%lf", &p[i]);
}
void dinamic()
{
int i, j;
for(i = 0; i <= n+1; ++i)
a[i][0] = 1;
a[1][1] = p[1];
for(i = 2; i <= n; ++i)
for(j = 1; j <= k; ++j)
a[i][j] = a[i-1][j] + a[i-1][j-1]*p[i];
}
long long int f(int x)
{
if(!x)
return 1;
if(x <= 2)
return x;
return x * f(x-1);
}
int main()
{
freopen("dezastru.in", "r", stdin);
freopen("dezastru.out", "w", stdout);
read();
dinamic();
a[n][k] = (double)a[n][k] / (f(n) / f(n-k) / f(k));
a[n][k] = floor(a[n][k]* 1000000) / 1000000;
printf("%.6lf\n", a[n][k]);
//printf("%lld\n", f(n) / f(n-k) / f(k) );
/*for(int i = 1; i <= n; ++i)
{
for(int j = 1; j <= n; ++j)
printf("%llf ", a[i][j]);
printf("\n");
} */
return 0;
}