Pagini recente » Cod sursa (job #1776307) | Cod sursa (job #186988) | Cod sursa (job #1334846) | Cod sursa (job #1258583) | Cod sursa (job #949040)
Cod sursa(job #949040)
#include <stdio.h>
#define INPUT_FILE "fact.in"
#define OUTPUT_FILE "fact.out"
#define TRUE 1
#define FALSE 0
#define INVALID_RESULT -1
/*** DATA VARIABLES ***/
FILE *f;
long p, n = INVALID_RESULT;
/*** READ AND WRITE FUNCTIONS ***/
void read()
{
f = fopen(INPUT_FILE, "rt");
fscanf(f, "%ld", &p);
fclose(f);
}
void write()
{
f = fopen(OUTPUT_FILE, "wt");
fprintf(f, "%ld", n);
fclose(f);
}
/*** SOLVING PROBLEM FUNCTIONS ***/
long getZeros(long value)
{
long x;
long answer = 0;
for (x = 5; x <= value; x *= 5)
answer += value / x;
return answer;
}
void solve()
{
long min = 1, max = 100000000;
long med, zeros;
while (min < max) {
med = (min + max) / 2;
zeros = getZeros(med);
if (zeros == p) {
if (med < 5)
n = 1;
else
n = med - med % 5;
return;
} else if (zeros > p) {
max = med - 1;
} else {
min = med + 1;
}
}
n = INVALID_RESULT;
}
/*** MAIN ***/
int main()
{
read();
solve();
// printf("p = %8d, n = %8d\n", p, n);
write();
return 0;
}