Cod sursa(job #583920)

Utilizator BlackElfSpulber Iosif BlackElf Data 23 aprilie 2011 12:33:17
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>
using namespace std;
int NrOfFives ( int n )
{
 int pws[]={5,25,125,625,3125,
           15625,78125,390625,1953125,9765625,48828125,
           244140625,1220703125}; 
 int s = 0;
 int i = 0;
 int a = 1;
 while (a)
 {
  a = n / pws[i];
  s += a;
  i ++;
 }
 
 return s;
}
int main()
{
 unsigned int  p , st , mijl , gasit = 0 , m  ;
 long long int dr ;
 fstream f("fact.in",ios::in);
 fstream g("fact.out",ios::out);
 f>>p;
 if( p == 0 )
 {
  g << 1;
  return 0 ; 
 }      
 f.close();
 st = 0 ; 
 dr = 800000016;
 while( st <= dr && !gasit )
 {     
  mijl = ( st + dr )/2;
  m = NrOfFives(int( mijl));
  if( dr == st + 1)
  {
   g << -1 ; 
   return 0 ;
  }   
  if( m == p )gasit=1;
  else
  {
   if( m < p ) st = mijl ;
   else dr = mijl ;
  }
 }
 g << mijl - mijl % 5 ;
 g.close();
 return 0 ;
}