Cod sursa(job #941042)

Utilizator superman_01Avramescu Cristian superman_01 Data 17 aprilie 2013 20:21:52
Problema Factorial Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb

//problema facauta la plictiseala
//n-aveam altceva mai bun de facut

#include<fstream>
#include<utility>


using namespace std;

int p;
int Answer;

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

int numb_power5(int n);
int binary_search(int left,int right);
int main ( void )
{
  f>>p;
   if( p == 0)
      g<<1;
   else
   {
    Answer=binary_search(1,2000000000);
    if( Answer == 0 )
       g<<-1;
    else
    {
        while( Answer % 5 )
            --Answer;
        g<<Answer;
    }

   }
   f.close();
   g.close();
   return 0;
}
int binary_search ( int left , int right )
{
  while( left <= right )
  {
      int mid=(left+right)>>1;
      int number=numb_power5( mid );
      if( number == p )
        return mid;
      else
        if( number < p )
            left=mid-1;
        else
            right=mid+1;

  }

}
int numb_power5( int n)
{
    int cnt(0);
    int x(5);
    while( x <= n )
    {
        cnt+=n/x;
         x*=5;

    }
    return cnt;
}