Pagini recente » Rating Pat Razvan (razvanpat) | Cod sursa (job #1426939) | Cod sursa (job #2783257) | Cod sursa (job #1177967) | Cod sursa (job #897598)
Cod sursa(job #897598)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("dezastru.in");
ofstream g("dezastru.out");
float prob[26];
int n,K;
int x[26],atac=0,proba,supra,posib;
float probfinal;
void afisare(void)
{
int i;
float atac;
atac=prob[x[1]];
for(i=2;i<=K;i++)
atac=atac*prob[x[i]];
probfinal=probfinal+(atac/posib);
//for(i=1;i<=K;i++)
// cout<<x[i]<<" ";
// cout<<"\n";
}
int continuare(int k)
{
int i,ok=1;
for(i=1;i<k;i++)
if(x[i]==x[k])
ok=0;
return ok;
}
void back(void)
{
int k;
k=1;
while(k>0)
{
if(k==K+1)
{
afisare();
k--;
}
else if(x[k]<n)
{
x[k]++;
if(continuare(k)==1)
k++;
}
else
{
x[k]=0;
k--;
}
}
}
int main()
{
int i;
f>>n>>K;
proba=1;
for(i=1;i<=n;i++)
{
f>>prob[i];
proba=proba*i;
if(i==n-K)
supra=proba;
}
posib=proba/supra;
back();
g<<probfinal;
//cout <<(0.15/6 + 0.24/6 + 0.15/6 + 0.40/6 + 0.24/6 + 0.40/6);
return 0;
}