Cod sursa(job #195758)
| Utilizator | Data | 21 iunie 2008 17:20:32 | |
|---|---|---|---|
| Problema | Factorial | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.39 kb |
#include <stdio.h>
long ls,ld,s,n,p;
long nr(long n)
{
long n2,n5,i;
for (n2=0,i=2;i<=n;i*=2)
n2+=(n/i);
for (n5=0,i=5;p<=n;i*=5)
n5+=(n/i);
if (n2<n5) return n2;
return n5;
}
int main()
{
scanf("%lld",&p);
ls=s=1;
ld=999999999;
while (ls<=ld)
{
n=(ls+ld)/2;
if (nr(n)>=p)
{
s=n;
ld=n-1;
}
else
ls=n+1;
}
printf("%lld",s);
return 0;}