Pagini recente » Cod sursa (job #1347053) | Cod sursa (job #1681480) | Cod sursa (job #1084785) | Cod sursa (job #366776) | Cod sursa (job #1693943)
#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+1;
while(dr-st>1){
m=min(p2((st+dr)/2), p5((st+dr)/2));
if(m<p)
st=(st+dr)/2+1;
else
dr=(st+dr)/2;
}
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;
}