Pagini recente » Cod sursa (job #2755543) | Cod sursa (job #1126442) | Cod sursa (job #1570912) | Cod sursa (job #2671273) | Cod sursa (job #1002067)
#include <iostream>
#include <cstdio>
#define MAX_N 30
using namespace std;
int n , k ;
long long c[MAX_N][MAX_N] ;
double a[MAX_N][MAX_N] , p[MAX_N] ;
int combinari( int n , int k )
{
int i , j ;
c[0][0] = 1 ;
for( i = 1 ; i <= n ; i++ )
{
c[i][0] = 1 ;
for( j = 1 ; j <= n ; j++ )
{
c[i][j] = 1LL*c[i-1][j-1] + 1LL*c[i-1][j] ;
}
}
return c[n][k] ;
}
void citire()
{
freopen("dezastru.in","r",stdin);
scanf("%d %d", &n , &k) ;
int i ;
for( i = 1 ; i <= n ; i++ )
{
scanf("%lf" , &p[i]) ;
a[i][1] = a[i-1][1]*1.0 + p[i]*1.0 ;
}
}
void dinamica()
{
int i , j ;
for( i = 1 ; i <= n ; i++ )
{
for( j = 2 ; j <= k ; j++)
{
a[i][j] = a[i-1][j]*1.0 + 1.0*a[i-1][j-1]*p[i] ;
}
}
}
void scrie()
{
int i , j;
for(i=1; i<=n; i++)
{
for(j=1; j<=k; j++)
{
cout<<a[i][j]<<' ';
}
cout<<endl;
}
}
int main()
{
citire();
dinamica();
freopen("dezastru.out" , "w" , stdout);
double answer ;
answer = a[n][k] / combinari(n,k) ;
printf("%.6lf" , answer ) ;
return 0 ;
}