Pagini recente » Cod sursa (job #743461) | Cod sursa (job #3038298) | Cod sursa (job #2344086) | Cod sursa (job #1407318) | Cod sursa (job #9187)
Cod sursa(job #9187)
#include <stdio.h>
FILE *in = fopen("fact.in", "r"), *out = fopen("fact.out", "w");
long long p;
long long zfact(long long n)
{
long long s = 0;
while (n)
{
s += n / 5;
n /= 5;
}
return s;
}
int main()
{
fscanf(in, "%lld", &p);
if ( p == 0 )
{
fprintf(out, "%d\n", 1);
return 0;
}
long long c;
long long a = 0, b = 10000000000LL;
long long f;
while ( a < b )
{
c = (a + b)/2;
f = zfact(c);
if ( f < p )
a = c+1;
else if ( f > p )
b = c-1;
else
break;
}
// if ( zfact(c) != p )
// {
// fprintf(out, "%lld\n", -1);
// return 0;
// }
long long t = c;
while ( c % 5 )
--c;
while ( t % 5 )
++t;
if ( zfact(c) == p )
fprintf(out, "%lld\n", c);
else if ( zfact(t) == p )
fprintf(out, "%lld\n", t);
else
fprintf(out, "%lld\n", -1);
return 0;
}