Pagini recente » Cod sursa (job #1297036) | Cod sursa (job #1293573) | Cod sursa (job #1841279) | Cod sursa (job #2327117) | Cod sursa (job #1680375)
#include<iostream>
#include<fstream>
#include <iomanip>
#include <string>
#include <sstream>
using namespace std;
int N,K;
double numere[30];
double sume[30][30];
int cmb[30][30];
//int poz;
//stack<double> result;
//double data[25];
//double probab;
//double prob1=1;
//double A[25][25];
/*
int combinari(int n,int k)
{
if (k==0) return 1;
else if (k>n) return 0;
else return (combinari(n-1,k)+combinari(n-1,k-1));
}*/
/*
void combinationUtil(double numere[], double data[], int start, int end, int index, int k)
{
if (index == k) {
double prob=1;
cout << poz << ": ";
for (int j=0; j<k; j++) {
prob = prob*data[j];
cout << data[j] << " ";
}
cout << "\n";
poz++;
probab=probab+prob;
return;
}
for (int i=start; i<=end && end-i+1 >= k-index; i++)
{
data[index] = numere[i];
combinationUtil(numere, data, i+1, end, index+1, k);
}
}
*/
/*
void combinationUtil(double prob, int N, int k) {
if (k == 0) {
probab += prob;
++poz;
return;
}
if (N == k) {
for(int i = N-1; i >= 0; --i)
prob *= numere[i];
probab += prob;
++poz;
return;
}
combinationUtil(prob, N-1, k);
combinationUtil(prob*numere[N-1], N-1, k-1);
}*/
int main(){
ifstream f("dezastru.in");
ofstream out("dezastru.out");
f>>N>>K;
for (int i=1; i<=N;i++) {
f>>numere[i];
}
cmb[0][0]=1;
sume[0][0]=1;
for(int i=1; i<=N; ++i) {
for(int j=0; j<=K; ++j)
{
cmb[i][j]= cmb[i-1][j]+ cmb[i-1][j-1];
sume[i][j]= sume[i-1][j]+ sume[i-1][j-1]*numere[i];
}
}
out << setprecision(6) << (sume[N][K])/(double)(cmb[N][K]);
return 0;
}