Cod sursa(job #179096)

Utilizator Snavenportnespecificat Snavenport Data 15 aprilie 2008 17:03:38
Problema Factorial Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 kb
#include <fstream.h>

ifstream f("fact.in");
ofstream g("fact.out");


long p;
long a,b,c,cvechi;

long nr(long numar)
{
    long nr0=0;
    while (numar%5==0)
      {
           nr0++;
           numar=numar/5;
      }
    return nr0;
}

int main()
{
    
    f>>p;
    f.close();
    if (p==0)
      g<<1;
    else
     {
        a=5;
        b=5*p;
        c=(a+b)/2;
        long i,nr0,x;
        nr0=0;
        int sw=0;
        for (i=a;i<=c;i=i+5)
          {
                  x=i;
                  while (x%5==0)
                    {
                        nr0++;
                        x=x/5;
                    }
          }
        while (a<=b && sw==0)
        {
            cvechi=c;
           /* g<<a<<" "<<b<<" "<<c<<" "<<nr0<<"\n";*/
            if (p==nr0)
              {
              while (c%5!=0)
                c--;
              g<<c;
              sw=1;
              }
            else
              if (p<nr0)
                {
                   b=c-1;
                   c=(a+b)/2;
                   for (i=cvechi;i>c;i--)
                      nr0=nr0-nr(i);
                }
               else
                 {
                    a=c+1;
                    c=(a+b)/2;
                    for (i=cvechi+1;i<=c;i++)
                      nr0=nr0+nr(i);
                   
                 }
                      
              
        }
        if (sw==0)
          g<<"-1";
     }
     
    return 0;
}