Pagini recente » Cod sursa (job #1660181) | Cod sursa (job #2594069) | Cod sursa (job #15728) | Cod sursa (job #3193466) | Cod sursa (job #1210031)
#include <cstdio>
using namespace std;
double sum = 0.0;
int n, k, i,sol[26],total;
double v[26];
void computeSum()
{
double prod=1.0;
prod = v[sol[1]];
for (i = 2; i <= k; ++i) prod *= v[sol[i]];
sum += prod;
}
void bkt(int p)
{
int i;
for (i = sol[p-1]+1; i <=n-k+p; ++i)
{
sol[p] = i;
if (p == k) computeSum();
else bkt(p + 1);
}
}
int combinari(int n, int k)
{
int prod=1,i;
if (n - k > k)
{
for (i = n - k + 1; i <= n; ++i)
{
prod *= i;
}
for (i = 2; i <= k; ++i)
{
prod /= i;
}
}
else
{
for (i = k + 1; i <= n; ++i)
{
prod *= i;
}
for (i = 2; i <= n-k; ++i)
{
prod /= i;
}
}
return prod;
}
int main()
{
FILE *fin, *g;
fin=fopen("dezastru.in", "r");
g=fopen("dezastru.out", "w");
fscanf(fin, "%d %d", &n, &k);
for (i = 1; i <= n; ++i)
{
fscanf(fin,"%lf",&v[i]);
}
total = combinari(n, k);
bkt(1);
sum=sum/total;
fprintf(g,"%.6lf",sum);
fclose(fin);
fclose(g);
return 0;
}