Pagini recente » Cod sursa (job #1945397) | Cod sursa (job #1742184) | Cod sursa (job #1353036) | Cod sursa (job #2808788) | Cod sursa (job #1788293)
#include <iostream>
#include <fstream> //Enunt:
#include <iomanip> //Avem n atacuri ce pot veni in orice ordine, fiecare cu o probabilitate de supravieturie
using namespace std; //Calculam probabilitatea totala de supravietuire a primelor k cu 6 zecimale exacte
int a[26],b[26];
double v[26], sol, nr; //v e vectorul probabilitatilor, gen
inline void combinari(int k,int n,int m, double p){
int i;
if(k-1 == m){
sol=sol+p;
++nr;
}
else{
for(i=1;i<=n; i++)
if(!b[i] && a[k-1] < i){
a[k] = i;
b[i] = 1;
combinari(k+1,n,m,p*v[i]); //v[a[i]] => probabilitatea v a evenimentului a, inmultim fiecare combinatie de probabilitati
b[i] = 0;
}
}
}
int main()
{
ifstream in("dezastru.in");
ofstream out("dezastru.out");
int j,n,m;
in>>n>>m;
for(j=1;j<=n;j++)
in>>v[j];
combinari(1,n,m,1);
out<<setprecision(6)<<sol/nr;
in.close();
out.close();
return 0;
}