Pagini recente » Cod sursa (job #311486) | Cod sursa (job #525356) | Cod sursa (job #2346732) | Cod sursa (job #1890426) | Cod sursa (job #66500)
Cod sursa(job #66500)
#include <stdio.h>
#define dim 26
int N, K, Sol[dim];
double A[dim], Solf, Soli, fact = 1, kfact = 1;
void Back(int k)
{
if(k == K + 1)
{
Soli = 1;
for(int i=1; i<=K; ++i)
Soli *= A[Sol[i]];
Soli /= fact;
Soli *= kfact;
Solf += Soli;
}
else
{
if(k == 1)
{
for(int i=1; i<=N-K+1; ++i)
{
Sol[k] = i;
Back(k + 1);
}
}
else
{
for(int i=Sol[k-1]+1; i<=N; ++i)
{
Sol[k] = i;
Back(k + 1);
}
}
}
}
int main()
{
FILE *f = fopen("dezastru.in", "rt");
FILE *g = fopen("dezastru.out", "wt");
fscanf(f, "%d %d", &N, &K);
for(int i=1; i<=N; ++i)
{
fscanf(f, "%lf", A+i);
fact *= i;
if(i <= K) kfact *= i;
}
Back(1);
fprintf(g, "%.6lf", Solf);
fclose(f);
fclose(g);
return 0;
}