Pagini recente » Borderou de evaluare (job #954119) | Borderou de evaluare (job #134823) | Borderou de evaluare (job #975766) | Borderou de evaluare (job #2338565) | Cod sursa (job #1546662)
#include <stdio.h>
long long nrz(long long x)
{
long long nr, nr_div;
for(nr = 0, nr_div = x / 5; nr_div > 0; nr_div /= 5)
nr += nr_div;
return nr;
}
int main()
{
long long left, right, nrz_left, middle, nrz_middle;
int p;
freopen("fact.in", "r", stdin);
freopen("fact.out", "w", stdout);
scanf("%d", &p);
if(p == 0)
{
printf("1\n");
return 0;
}
left = 0;
right = 500000000;
while(left < right)
{
middle = (left + right) / 2;
nrz_middle = nrz(middle);
if(nrz_middle == p)
right = middle;
else
if(nrz_middle > p)
right = middle - 1;
else
left = middle + 1;
}
nrz_left = nrz(left);
if(nrz_left != p && nrz(left + 1) != p)
printf("-1\n");
else
if(nrz_left == p)
printf("%lld\n", left);
else
printf("%lld\n", right);
return 0;
}