Pagini recente » Cod sursa (job #2191210) | Cod sursa (job #1262229) | Cod sursa (job #2241965) | Cod sursa (job #868101) | Cod sursa (job #273195)
Cod sursa(job #273195)
#include <stdio.h>
int v[30];
double suma, prob[30];
double p;
long long n;
long long k,kfact2,nfact,kfact,n2;
int exista( int t)
{
if (v[t]<n)
return 1;
return 0;
}
int cond( int t)
{
int i;
for(i=0;i<t;i++)
if(v[i]>=v[t]) //verificam sa fie diferit si sa fie mai mare ca sa fie unica solutia
return 0;
return 1;
}
int solutie( int t)
{
if(t==k)
return 1;
return 0;
}
void afisare(int t)
{
int i;
double temp;
temp =1;
for(i=0;i<t;++i)
temp*=prob[v[i]];
suma+=temp;
++p;
}
void bkt(int t)
{
int i;
if(solutie(t))
afisare(t);
else
for(i=0;i<n;i++) //for de la prima valoare valida la ultima valoare valida
{
v[t] = i; //aici dami valorile posibile
if(cond(t)) //verificare conditii pentru valoarea curenta
bkt(t+1);
}
}
int main()
{
int i;
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%lld %lld\n",&n,&k);
for(i=0;i<n;i++)
scanf("%lf",&prob[i]);
suma=0;
bkt(0);
printf("%lf\n",p);
printf("%lf\n",suma);
suma=suma/p;
printf("%lf",suma);
return 0;
}