Pagini recente » Cod sursa (job #2537979) | Cod sursa (job #694407) | Cod sursa (job #527153) | Cod sursa (job #1572943) | Cod sursa (job #953555)
Cod sursa(job #953555)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream fin("dezastru.in");
ofstream fout("dezastru.out");
int n, m, x[27];
double p[27];
bool c[27];
double fact = 1, rez;
long long d=1;
void Calculare(){
double nr = 1;
for(int i=1; i<=m; i++)
nr *= p[x[i]];
nr = (nr/d);
rez += (double)(nr * fact);
}
void Back(int k){
if(k == m+1) Calculare();
else
for(int j=x[k-1]+1; j <= n; j++)
if(!c[j]){
x[k] = j;
c[j] = 1;
Back(k+1);
c[j] = 0;
}
}
int main()
{
fin>>n>>m;
for(int i=1; i<=n; i++)
fin>>p[i];
for(int i=m; i>=1; i--)
fact *= i;
for(int i=n; n-i<=m; i--)
d *= i;
Back(1);
fout<<setprecision(6)<<fixed<<rez;
return 0;
}