Cod sursa(job #257079)

Utilizator xtremespeedzeal xtreme Data 12 februarie 2009 19:23:06
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<iostream.h>
#include<stdio.h>

int main()
    {
    unsigned long int mid,hi,lo,putere,p,nrz,factor;
    freopen("fact.in","r",stdin);freopen("fact.out","w",stdout);
    scanf("%ld",&p);
    lo=0;hi=4000000000;
    while(lo<=hi)
          {mid=lo+(hi-lo)/2;nrz=0;factor=5;
           do
              {putere=mid/factor;nrz+=putere;factor*=5;}
           while(putere);
           if(nrz<p)
                       lo=mid+1;
           else {if(nrz>p)
                      hi=mid-1;
                 else
                    {while(mid>1 && nrz==p) 
                         {mid--;nrz=0;factor=5;
                          do
                               {putere=mid/factor;nrz+=putere;factor*=5;}
                          while(putere);}
                     if(nrz!=p)     
                               printf("%ld",(mid+1));
                     else         
                             printf("1");
                     return 0;}}
           }
    printf("-1");return 0;
    fclose(stdin);fclose(stdout);
    }