Pagini recente » Borderou de evaluare (job #2080849) | Borderou de evaluare (job #354350) | Borderou de evaluare (job #2716106) | Borderou de evaluare (job #287952) | Cod sursa (job #2466086)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <iomanip>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
long long n, k, nrp;
float e[26], fact[26], dp[26][26];
int main(){
fin >> n >> k;
for(int i=1; i<=n; ++i){
fin >> e[i];
}
fact[0]=1;
for(int i=1; i<=n; ++i){
fact[i]=fact[i-1]*i;
}
dp[0][0]=1;
for(int i=1; i<=n; ++i){
dp[i][0]=1;
for(int j=1; j<=i; ++j){
dp[i][j] = dp[i-1][j]+dp[i-1][j-1]*e[i];
}
}
fout << dp[n][k]*fact[k]*fact[n-k]/fact[n];
}
/*cu vector STL
long long n, k, nrp;
vector <int> v;
float a[30], sol;
int main(){
fin >> n >> k;
for(int i = 1; i <= n; ++i){
fin >> a[i];
v.push_back(i);
}
do{
float p = 1;
for(int i=1; i<=k; i++){
p *= a[v[i]];
}
sol+=p;
nrp++;
}while(next_permutation(v.begin(), v.end()));
cout << fixed << setprecision(6) << sol/nrp;
}*/