Pagini recente » Cod sursa (job #2145325) | Cod sursa (job #358117) | Cod sursa (job #851731) | Cod sursa (job #730144) | Cod sursa (job #949087)
Cod sursa(job #949087)
#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;
unsigned long long p, n;
/*** READ AND WRITE FUNCTIONS ***/
void read()
{
f = fopen(INPUT_FILE, "rt");
fscanf(f, "%lld", &p);
fclose(f);
}
void write()
{
f = fopen(OUTPUT_FILE, "wt");
fprintf(f, "%lld", n);
fclose(f);
}
/*** SOLVING PROBLEM FUNCTIONS ***/
unsigned long long getZeros(register unsigned long long value)
{
register unsigned long long answer = 0;
while (value > 0) {
answer += value / 5;
value /= 5;
}
return answer;
}
void solve()
{
unsigned long long min = 0, max = 200000000;
unsigned long long med, zeros;
n = INVALID_RESULT;
if (p < 0 || p > 100000000) {
return;
}
if (p == 0) {
n = 1;
return;
}
while (min < max) {
med = (min + max) / 2;
zeros = getZeros(med);
if (zeros == p) {
n = med - med % 5;
} else if (zeros > p) {
max = med - 1;
} else {
min = med + 1;
}
}
}
/*** MAIN ***/
int main()
{
read();
solve();
write();
return 0;
}