Pagini recente » Cod sursa (job #700387) | Cod sursa (job #2698559) | Cod sursa (job #477389) | Cod sursa (job #912827) | Cod sursa (job #490542)
Cod sursa(job #490542)
#include<fstream>
#include<iostream>
#include<iomanip>
using namespace std;
#define MAXN 26
typedef unsigned long long uint64;
int n,k;
double probs[MAXN];
inline int maximum(const int a, const int b)
{
return a>b?a:b;
}
inline int minimum(const int a, const int b)
{
return a<b?a:b;
}
int main()
{
double mat[MAXN][MAXN]={{}};
fstream fin("dezastru.in", fstream::in);
fstream fout("dezastru.out", fstream::out);
fin>>n>>k;
uint64 Cnk=1,prod=1;
for(int i=maximum(n-k,k)+1; i<=n; ++i)
Cnk*=i;
for(int i=1; i<=minimum(n-k,k); ++i)
prod*=i;
Cnk/=prod;
for(int i=1; i<=n; ++i)
fin>>probs[i];
for(int i=0; i<=n; ++i)
mat[i][0]=1;
for(int i=1; i<=n; ++i)
for(int j=1; j<=n; j++)
mat[i][j]=mat[i-1][j]+mat[i-1][j-1]*probs[i];
fout<<setiosflags(fstream::fixed)<<setprecision(6)<<mat[n][k]/((double)Cnk)<<" \n";
fin.close();
fout.close();
return 0;
}