Pagini recente » Cod sursa (job #694358) | Cod sursa (job #2011601) | Cod sursa (job #395249) | Cod sursa (job #2028306) | Cod sursa (job #1415946)
#include<stdio.h>
#include<stdlib.h>
int n, m, *v,nr;
float s = 0;
float *v1;
FILE *g = fopen("dezastru.out", "w");
void citire()
{
FILE *f = fopen("dezastru.in", "r");
fscanf(f, "%d%d", &m, &n);
v1 = (float*)calloc(n, sizeof(float));
v = (int*)calloc(n, sizeof(int));
for (int i = 1; i <= m; i++)
fscanf(f,"%f",&v1[i]);
}
/*void afisare()
{
for (int i = 0; i < n; i++)
fprintf(g, "%0.1f ", v1[v[i]]);
fprintf(g, "\n");
}
*/
void afisare1()
{
fprintf(g,"%0.6f", s/nr);
}
void retinere()
{
float p = 1;
for (int i = 0; i < n; i++)
p = p*v1[v[i]];
s = s + p;
}
int valid(int k)
{
for (int i = 0; i < k; i++)
if ( v[i] == v[k])
return 0;
return 1;
}
void BT(int k)
{
if (k == n)
{
nr++;
retinere();
//afisare();
}
else
for (int i = 1; i <= m; i++)
{
v[k] = i;
if (valid(k))
{
k++;
BT(k);
k--;
}
}
}
int main()
{
citire();
BT(0);
afisare1();
return 0;
}