Cod sursa(job #379841)

Utilizator darkseekerBoaca Cosmin darkseeker Data 4 ianuarie 2010 10:59:53
Problema Factorial Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <iostream.h>
#include <math.h>
#include <fstream.h>
int factorial(unsigned long int n)
{
    int i=0;
    unsigned long int nr=0;
    while(pow(5,i)<n)
    i++;
    for(int k=1;k<=i;k++)
    nr+=n/pow(5,k);
return nr;
}
void binar(unsigned long int k,unsigned long int j,unsigned long int nr)
{
     unsigned long int min;
    fstream g("fact.out",ios::out);
    int ok=0,q=0;
    unsigned long int cautat=0;
  do
  {
                   cautat=(k+j)/2;
                   if(factorial(cautat)==nr)
                   {
                   ok=1;
                   min=cautat+10;
                   for(unsigned long int i=cautat-10;i<=cautat+10;i++)
                   if(i<min&&factorial(i)==nr)
                   min=i;
                   g<<min;
                   }
                   else
                   if(factorial(cautat)>nr)
                   j=cautat-1;
                   else
                   k=cautat+1;
                   }while(k<=j&&ok==0);
                   
if(ok==0)
g<<-1;
}
int main()
{
    unsigned long int nr,k,j;
    fstream f("fact.in",ios::in);
    fstream g("fact.out",ios::out);
    f>>nr;
    k=nr*4;
    j=nr*5;
    if(nr==1)
    g<<5;
    else
    binar(k,j,nr);
    return 0;
}