Pagini recente » Istoria paginii utilizator/vlad_mihai | Diferente pentru utilizator/mrpetcu intre reviziile 11 si 10 | Monitorul de evaluare | Diferente pentru utilizator/pompeii_marinarul intre reviziile 8 si 7 | Cod sursa (job #768049)
Cod sursa(job #768049)
#include <stdio.h>
#include <stdlib.h>
int nr_zero(int n)
{
int rez=0,k=5;
while(k<=n)
{
rez+=n/k;
k=k*5;
}
return rez;
}
int cautare_binara(int p)
{
int i=1,rez,k,a=4*p,b=5*p;
k=nr_zero(b);
while(k!=p)
{
if(k<p)
{
a=(a+b)/2; i=0;
k=nr_zero(a);
}
else
{
b=(a+b)/2;
k=nr_zero(b);
i=1;
}
// printf("%d %d %d %d\n",a,b,k,p); getch();
if((b-a)==1)
return -1;
}
if(i==1)
rez=div_5(b);
else
rez=div_5(a);
return rez;
}
int div_5(int n)
{
while((n%5)!=0)
n--;
return n;
}
int main()
{
int p,rez;
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
scanf("%d", &p);
if(p==0)
rez=1;
else
rez=cautare_binara(p);
printf("%d", rez);
return 0;
}