Pagini recente » Cod sursa (job #1716172) | Cod sursa (job #42122) | Cod sursa (job #1459181) | Cod sursa (job #2417857) | Cod sursa (job #2422415)
#include<fstream>
#include<iomanip>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
//SLOW version
//int n, k, x[30], number;
//double fract[30], suma;
//int combinari(int n,int k){
// if(k==0||k==n)
// return 1;
// else
// return combinari(n-1,k-1)+combinari(n-1,k);
//}
//void back(int l) {
// if (l == k) {
// number++;
// double produs = 1;
// for (int i = 1; i <= k; ++i)
// produs *= fract[x[i]];
// suma += produs;
// } else {
// for (int i = x[l] + 1; i <= n; ++i) {
// x[l + 1] = i;
// back(l + 1);
// }
// }
//
//}
//apel back(0)
int n,k,c[26][26];
double d[26][26],v[26];
int main() {
fin >> n >> k;
for (int i = 1; i <= n; ++i)
fin >> v[i];
for(int i=1;i<=n;++i)
d[i][0]=c[i][i]=c[i][0]=1;
d[0][0]=1;
for (int i = 1; i <= n; ++i)
for (int j = 1; j < i; ++j)
c[i][j] = c[i-1][j-1] + c[i-1][j];
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= i; ++j)
d[i][j] = d[i-1][j-1]*v[i] + d[i-1][j];
fout << setprecision(6) << d[n][k]/c[n][k];
fin.close();
fout.close();
return 0;
}