Cod sursa(job #583016)

Utilizator UgleaEduFMI - Edward UgleaEdu Data 17 aprilie 2011 12:47:24
Problema Factorial Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 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 i , p , st , dr , mijl , j = 0 , gasit = 0 , m  ;
 unsigned long long int v[200000];
 for( i = 5 ; j < 200000 ; i += 5 )
 {
  v[j] = i ; 
  j++;
 }
 fstream f("fact.txt",ios::in);
 fstream g("fact.out",ios::out);
 f>>p;
 if( p == 0 )
 {
  g << 1;
  return 0 ; 
 }      
 f.close();
 st = 0 ; 
 dr = 200000;
 while( st <= dr && !gasit )
 {     
  mijl = ( st + dr )/2;
  m = NrOfFives(int( v [ mijl ]));
  if( dr == st + 1)
  {
   g << -1 ; 
   return 0 ;
  }   
  if( m == p )gasit=1;
  else
  {
   if( m < p ) st = mijl ;
   else dr = mijl ;
  }
 }
 g << v[ mijl ];
 g.close();
 return 0 ;
}