Pagini recente » Cod sursa (job #2919470) | Cod sursa (job #1342899) | Cod sursa (job #1127739) | Cod sursa (job #1185605) | Cod sursa (job #2291280)
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f ("dezastru.in");
ofstream g ("dezastru.out");
int n , k;
int v [26];
double ans , p [26];
int fact (int n){
if (! n)
return 1;
return fact (n - 1) * n;
}
void calc (){
double val = p [v [1]];
for(int i = 2 ; i <= k ; ++ i)
val *= p [v [i]];
ans += val;
}
bool viz [26];
void bkt (int strat){
if (strat == n)
calc ();
else
for(int i = 1 ; i <= n ; ++ i)
if (! viz [i]){
viz [i] = true;
v [strat + 1] = i;
bkt (strat + 1);
viz [i] = false;
}
}
int main()
{
f >> n >> k;
for(int i = 1 ; i <= n ; ++ i)
f >> p [i];
bkt (0);
g << fixed << setprecision (6) << ans / fact (n);
return 0;
}