Cod sursa(job #200097)

Utilizator Ramona2007Furtuna Ramona Cristina Ramona2007 Data 22 iulie 2008 11:50:42
Problema Factorial Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<iostream.h>
#include<stdio.h> 
   
      long long int numarzerouri( long long int c )  
    {  
	 long long int p = 0;
         while( c )  
         {  
                p += c/5;  
               c /= 5;  
        }  
	return p;
    }  
           
     
  int main()  
  {  
  long long int st, dr, n, p, c, nrz;  
   
  freopen("fact.in", "r", stdin);  
  freopen("fact.out", "w", stdout);
     
   cin>>p;  
     
   st=0;  
   dr=1000000000;
   n=1;  

   if(p==0)
    cout<<1;
   else if(p>0)  
   {  
   while(n)  
         {  c=(st+dr)/2;  
                nrz=numarzerouri(c);  
             if(nrz==p && st==dr)  
             { n=st; break;}   
             if(dr<st)  
              { n=-1; break;}   
             if(p>nrz)  
               st=c+1;  
             else  
              dr=c-1;                              
        }  
  
   if(p==nrz)
 cout<<dr;
   else
 cout<<-1;  
  } 
 return 0;  
}