Pagini recente » Cod sursa (job #2685177) | Cod sursa (job #2598208) | Cod sursa (job #2948996) | Cod sursa (job #165947) | Cod sursa (job #1890623)
#include <stdio.h>
using namespace std;
short int n,m,sol[26];
int cnt;
float v[26],sum;
void init(short int k)
{
sol[k] = sol[k-1];
}
bool succesor(short int k)
{
if(sol[k]<n)
{
sol[k]++;
return true;
}
return false;
}
bool valid(short int k)
{
for(short int i=1; i<k; i++)
if(sol[i] == sol[k])
return false;
return true;
}
bool solutie(short int k)
{
return k==m;
}
float tipar()
{
float sum=1;
for(short int i=1;i<=m;i++)
sum*=v[sol[i]];
return sum;
}
void bkt()
{
short int k=1;
init(k);
while(k)
{
if(succesor(k))
{
if(valid(k))
{
if(solutie(k))
{
sum += tipar();
cnt++;
}
else init(++k);
}
}
else k--;
}
}
int main()
{
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%hu%hu",&n,&m);
for(short int i=1; i<=n; i++)
scanf("%f",&v[i]);
bkt();
printf("%.6f",sum/cnt);
return 0;
}