Cod sursa(job #505846)
//se da un nr intreg p . sa se gaseasca cel mic nr nat pt care n! are exact p cifre de 0 la sf
#include<limits.h>
#include<stdio.h>
FILE *fin,*fout;
long n,nrz,max=LONG_MAX,exp,u,p,m,nr;
int main(){
fin=fopen("fact.in","r");
fout=fopen("fact.out","w");
fscanf(fin,"%ld",&nrz);
p=1; u=max;
if(nrz==0){fprintf(fout,"1"); return 0;}
while(p<=u){
m=(p+u)/2;
exp=1;
nr=0;
while(exp<=m){
exp=exp*5;
nr+=m/exp;
}
if(nrz==nr){
m=m-m%5;
fprintf(fout,"%ld",m);
break;
}
else
if(nr>nrz){u=m-1;}
else p=m+1;
}
if(p>u){fprintf(fout,"-1");}
fclose(fin);
fclose(fout);
return 0;}