Pagini recente » Borderou de evaluare (job #2246693) | Diferente pentru problema/proc2 intre reviziile 5 si 6 | Cod sursa (job #391373) | Cod sursa (job #441967) | Cod sursa (job #548779)
Cod sursa(job #548779)
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int n,m,x[25],per;
float na[30],p,sum;
void afisare()
{
p=1;
for(int i=1;i<=m;i++)
p=p*na[x[i]];
sum=sum+p/per;
}
int valid(int k)
{
for(int i=1;i<k;i++)
if(x[k]==x[i]) return 0;
return 1;
}
void back(int k)
{
for(int i=1;i<=n;i++)
{
x[k]=i;
if(valid(k))
if(k==m)
afisare();
else
back(k+1);
}
}
int main()
{
ifstream f("dezastru.in");
ofstream g("dezastru.out");
f>>n;
f>>m;
per=1;
for(int i=1;i<=n;i++)
per=per*i;
for(int i=1;i<=n;i++)
f>>na[i];
back(1);
g<< fixed << setprecision(6) << sum;
}