Cod sursa(job #396106)

Utilizator yonatanCont de teste yonatan Data 14 februarie 2010 15:41:55
Problema Factorial Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<iostream>
#include<fstream>
using namespace std;
ofstream fout("fact.out");

long rez=500000010,p;
long nrz(long n)
{long no=0,ci=5;
 while(n>=ci)
 {no+=n/ci;
 ci=ci*5;
 }
 return no;
}
void cauta(long lo,long hi)
{int k,mid;
    if(lo==hi)
       {if(p==nrz(lo))
        rez=lo;
        else
        rez=-1;
        }
     else
       {mid=lo+(hi-lo+1)/2;
       k=nrz(mid);
       {if(k==p)
           {if(mid<rez)
           {rez=mid;
           cauta(lo,mid-1);
           }
           }


          else
           {if(k>p)
             cauta(lo,mid-1);
             else
              cauta(mid+1,hi);
           }
       }
       }


}


int main()
{
    ifstream fin("fact.in");
    fin>>p;
    fin.close();

    cauta(0,5*p);
    fout<<rez;
    fout.close();
    return 0;
}