Cod sursa(job #37916)

Utilizator bacerandreiBacer Andrei bacerandrei Data 25 martie 2007 13:03:52
Problema Dezastru Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<fstream.h>
#include<iomanip.h>
long long n,p[40],uz[40],nr,k,i,x;
float a[26];
ofstream g("dezastru.out");
void afisare()
{
 float rez=1,s,l;
  for(i=1;i<=k;i++)
   rez=rez*a[p[i]];
   s=s+rez/x;
  l++;
   if(l==x)
  g<<(setprecision(6))<<s<<"\n";
}
long long fact(long long n)
{
 if(!n)
  return 1;
 return n*fact(n-1);
}
void genpermutari(int k)
{
  if(k-1==n)
   afisare();
  else
   for(int i=1;i<=n;i++)
    if(!uz[i])
     {
      p[k]=i;
      uz[i]=1;
      genpermutari(k+1);
      uz[i]=0;
     }
}
int main()
{
  ifstream f("dezastru.in");
   f>>n>>k;
    for(i=1;i<=n;i++)
     f>>a[i];
    x=fact(n)/fact(n-k);
  genpermutari(1);
 g.close();
return 0;
}