Pagini recente » Cod sursa (job #2154653) | Cod sursa (job #385610) | Cod sursa (job #3039678) | Cod sursa (job #2275030) | Cod sursa (job #561275)
Cod sursa(job #561275)
#include <stdio.h>
#define INFILE "fact.in"
#define OUTFILE "fact.out"
int P;
int digits(int N)
{
int dig = 0;
do {
dig++;
N /= 10;
} while (N);
return dig;
}
int factorial(int N)
{
int i, j;
int count = 0;
for (i=5; i<=N; i+=5) {
j = i;
while (!(j%5)) {
j /= 5;
count++;
}
}
return count;
}
int cauta(int target, int low, int high)
{
while (low < high) {
int mid = (low + high)/2;
int f = factorial(mid);
if (target == f)
return mid;
if (target < f)
high = mid-1;
else
low = mid+1;
}
}
int main()
{
freopen(INFILE, "r", stdin);
freopen(OUTFILE, "w", stdout);
scanf("%d", &P);
if (P == 0) {
printf("1");
return 0;
}
int low = 0;
int high = 40000006;
int result = cauta(P, low, high);
if (result == -1) {
printf("-1");
return 0;
}
while (result % 5)
result--;
printf("%d\n", result);
return 0;
}