Cod sursa(job #941036)

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

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

#include<cstdio>
#include<utility>

FILE *f=fopen("fact.in","r");
FILE *g=fopen("fact.out","w");

using namespace std;

int p;
int Answer;



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

   }
   fclose(f);
   fclose(g);
   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(1);
    while( x <= n )
    {
        x*=5;
        cnt+=n/x;
    }
    return cnt;
}