Pagini recente » Cod sursa (job #228425) | Cod sursa (job #755324) | Cod sursa (job #2907897) | Cod sursa (job #2079546) | Cod sursa (job #596563)
Cod sursa(job #596563)
#include<cstdio>
#include<fstream>
using namespace std;
short n,k,v[27],uz[27];
double a[27],suma;
int numar;
void Prelucrare()
{
double p=1;
short i;
numar++;
for(i=1;i<=k;i++)
p=p*a[v[i]];
suma+=p;
}
void Back(short pas)
{
short i,limita;
if(pas==k+1)
Prelucrare();
else
{
limita=n-k+pas;
for(i=v[pas-1]+1;i<=limita;i++)
{
if(uz[i]==0)
{
v[pas]=i;
uz[i]=1;
Back(pas+1);
uz[i]=0;
}
}
}
}
int main()
{
int i;
ifstream fin("dezastru.in");
fin>>n>>k;
for(i=1;i<=n;i++)
fin>>a[i];
fin.close();
Back(1);
suma=suma/numar;
freopen("dezastru.out","w",stdout);
printf("%.6f\n",suma);
return 0;
}