Cod sursa(job #8145)

Utilizator radamiRadu Patulescu radami Data 23 ianuarie 2007 21:08:16
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>


int main ()
 {

 unsigned long P,y,pres,presc=0,adaugat=0;

 std::fstream f ("fact.in");
 f>>P;
 f.close();

 pres=P*4;
 presc+=pres/5;
 presc+=pres/25;
 presc+=pres/125;
 presc+=pres/625;
 presc+=pres/3125;
 presc+=pres/15625;
 presc+=pres/78125;
 presc+=pres/390625;
 presc+=pres/1953125;
 presc+=pres/9765625;
 presc+=pres/48828125;
 presc+=pres/244140625;
 presc+=pres/1220703125;

 y=pres;
 if (presc<P)
  {
   while (pres%5!=0)
   {
    pres+=1;
    adaugat=1;
   } 
   if (adaugat)
    {
     y=pres;
     while ((y%5==0) && (y>0))
     {
      presc++;
      y/=5;
     }
    }

   while (presc<P)
    {
     y=pres;
     while ((y%5==0) && (y>0))
      {
       y=y/5;
       presc++;
      }
     pres+=5;
    }
  }

 else
  {
   while (pres%5!=0)
    {
     pres-=1;
     adaugat=1;
    }
   if (adaugat)
    presc++;
 while (presc>P)
 {
  y=pres;
  while ((y%5==0) && (y>0))
  {
  y=y/5;
  presc--;
  }
  pres-=5;
}
}



 std::ofstream g ("fact.out");
 if (presc==P)
  g<<pres;
   else
  g<<-1;
 g.close();




 return 0;
 }