Pagini recente » Cod sursa (job #3287502) | Cod sursa (job #2238020) | Cod sursa (job #1012529) | Cod sursa (job #1863339) | Cod sursa (job #410398)
Cod sursa(job #410398)
#include<stdio.h>
FILE *f=fopen("dezastru.in","r"), *g=fopen("dezastru.out","w");
int pr=1,k,n,m,i,poz;
float st[26],s,stot,v[26],p;
int fact(int n)
{
int p=1;
for(i=1;i<=n;i++)
p*=i;
return p;
}
int valid(int k)
{
int i;
for(i=1;i<=m;i++)
if(i!=k)
if(st[i]==st[k])
return 0;
return 1;
}
void back(int k)
{
int j;
for(j=poz+1;j<=n;j++)
{
st[k]=v[j];
poz=k;
if(valid(k))
if( st[m] && st[k+1]!=st[m])
{
p=1;
for(int l=1;l<=m;l++)
p*=st[l];
stot+=(p/pr)*m;
}
else back(k+1);
}
}
int main()
{
fscanf(f, "%d %d", &n, &m);
for(i=1;i<=n;i++)
fscanf(f, "%f", &v[i]);
pr=(fact(n)/(fact(m)*fact(n-m)))*m;
i=0;
back(1);
fprintf(g, "%.6f", stot);
}