Cod sursa(job #1597044)
| Utilizator | Data | 11 februarie 2016 17:00:21 | |
|---|---|---|---|
| Problema | Factorial | Scor | 85 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.7 kb |
#include <stdio.h>
#include <climits>
int zero(int n)
{
int nr = 0;
while(n >= 5)
{
nr += n / 5;
n /= 5;
}
return nr;
}
int main()
{
freopen("fact.in","r",stdin);
freopen("fact.out","w",stdout);
int p,st = 1, dr = INT_MAX,g = 1,sol = INT_MAX,m,z;
scanf("%d",&p);
while(st <= dr)
{
m = (st + dr) / 2;
z = zero(m);
if(z >= p)
{
if(m < sol && z == p)
sol = m;
dr = m - 1 ;
}
else
{
st = m + 1;
}
}
if(sol == (1 << 27))
printf("-1\n");
else
printf("%d\n",sol);
return 0;
}
