Pagini recente » Cod sursa (job #1915105) | Cod sursa (job #1627791) | Cod sursa (job #1225658) | Cod sursa (job #2109608) | Cod sursa (job #187235)
Cod sursa(job #187235)
#include <stdio.h>
int n,st[30],k;
double date[30],suma=0,total;
void calcul(){
int i;
double produs=1;
for(i=1;i<=k;i++)produs*=date[st[i]];
suma+=produs;
}
int a_mai_fost(int nr, int limita){
int i;
for(i=1;i<=limita;i++)if(st[i]==nr)return 1;
return 0;
}
void afisare(){
int i;
for(i=1;i<=k;i++)printf("%d ",st[i]);
printf("\n");
}
void permutari(){
int i,loc=k;
for(i=1;i<=k;i++)st[i]=i;
calcul();
loc=n;
while(loc>0){
st[loc]++;
if(st[loc]>n)loc--;
else{
if(loc==k)
{
if(!a_mai_fost(st[loc],loc-1))calcul();
}else{
if(!a_mai_fost(st[loc],loc-1)){loc++;st[loc]=0;}
}
}
}
}
int main(){
int i;
freopen("dezastru.in","r",stdin);
freopen("dezastru.out","w",stdout);
scanf("%d %d",&n,&k);
for(i=1;i<=n;i++)scanf("%lf",&date[i]);
permutari();
//printf("suma=%-10.6f",suma);
//incerc sa impart la fiecare termen in parte
for(i=2;i<=n;i++)
suma/=i;
printf("%-1.6f\n",suma);
return 0;
}