Pagini recente » Profil andrici_cezar | Profil andrici_cezar | Profil andrici_cezar | Autentificare | Cod sursa (job #1276768)
#include<cstdio>
using namespace std;
int fact(int n){
int k=5,nr=0;
while(k<=n){
nr=nr+n/k;
k=k*5;
}
return nr;
}
int bs(int st,int dr,int val)
{
//returneaza poz lui val else -1
int med,last=-1;
while(st<=dr)
{
med=dr-((dr-st)>>1);
if(fact(med)>=val)
{
last=med;
dr=med-1;
}
else
st=1+med;
}
return last;
}
int main(){
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
int n;
scanf("%d",&n);
if(n<0)
printf("-1");
else
if(n==0)
printf("1");
else
printf("%d",bs(1,2000000000,n));
}