Pagini recente » Cod sursa (job #709996) | Cod sursa (job #1712327) | Cod sursa (job #3197927) | Cod sursa (job #979584) | Cod sursa (job #1017706)
#include <fstream>
#include <stdio.h>
#define m 26
using namespace std;
int s[m];
float rezultat, sanse[m];
int factorial(int n)
{int s=1;
for(int i=1;i<=n;++i)
s*=i;
return s;
}
void print(int k)
{float t=1;
for(int i=0;i<k;i++)
t*=sanse[s[i]];
rezultat+=t;
}
bool ok(int p)
{
for(int i=0;i<p;++i)
{
if(s[p]<=s[i])
return false;
}
return true;
}
void combinari(int n,int k)
{int p=1;
for(;p>=0;)
{
if(s[p]<n)
{
++s[p];
if(ok(p))
{
if(p==k)
{
print(k);
p--;
}
else
{
++p;
s[p]=0;
}
}
}
else
{
--p;
}
}
}
int main()
{int n,k;
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%i%i",&n, &k);
for(int i=0;i<n;++i)
scanf("%f", &sanse[i]);
combinari(n,k);
printf("%f",rezultat*factorial(k)/factorial(n));
return 0;
}