Pagini recente » Cod sursa (job #459128) | Cod sursa (job #908537) | Cod sursa (job #1142033) | Cod sursa (job #2478258) | Cod sursa (job #1693893)
#include <stdio.h>
#include <stdlib.h>
int min(int a, int b){
return a < b ? a : b;
}
int p2(int n){
int p=2, s=0;
while(p<=n){
s+=n/p;
p*=2;
}
return s;
}
int p5(int n){
int p=5, s=0;
while(p<=n){
s+=n/p;
p*=5;
}
return s;
}
int main(){
int p;
FILE*fi,*fo;
fi=fopen("fact.in","r");
fo=fopen("fact.out","w");
fscanf(fi,"%d", &p);
int st, dr, m, n;
st=1;
dr=5*p;
while(st<=dr){
m=min(p2((st+dr)/2), p5((st+dr)/2));
if(m<=p)
st=(st+dr)/2+1;
else
dr=(st+dr)/2-1;
}
m=(st+dr)/2;
if(min(p2(m), p5(m))>p) m--;
if(min(p2(m), p5(m))==p)
fprintf(fo,"%d", m);
else
fprintf(fo,"-1");
fclose(fi);
fclose(fo);
return 0;
}