Cod sursa(job #84313)

Utilizator mordredSimionescu Andrei mordred Data 14 septembrie 2007 14:17:08
Problema Factorial Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<cstdlib>
#include<string>

unsigned long long  ndz(unsigned long long x);
unsigned long long  p;

int main(){

freopen("fact.in","r",stdin);freopen("fact.out","w",stdout);
scanf("%lld",&p);

if(p==0){printf("1\n");return 0;}
if(p==1){printf("5\n");return 0;}

unsigned long long  a=0,b=10000000001LL, c, aux;
while(b-a>1){
c=(a+b)/2;
aux=ndz(c);    
if(aux<p) a=c+1;
else if(aux>p) b=c-1;
else if(aux==p){printf("%lld\n",c/5*5);return 0;}
}

printf("-1\n");
        
return 0;    
}

unsigned long long  ndz(unsigned long long  x){
long nr=0;
while(x>=5){x/=5;nr+=x;}   
return nr;
}