Pagini recente » Cod sursa (job #2551684) | Cod sursa (job #979564) | Cod sursa (job #1694057) | Cod sursa (job #1462246) | Cod sursa (job #1837953)
/*
kpim1636
Kovacs Patrik
group: 512
http://www.infoarena.ro/problema/fact
*/
#include <fstream>
//#define CONSOLE
#ifdef CONSOLE
#include <iostream>
#define f std::cin
#define g std::cout
#endif
int exponent (int n, int k) {
int t = n / k;
int a = k;
int sum = 0;
while (t) {
sum += t;
a *= k;
t = n / a;
}
return sum;
}
int binary_search (int left, int right, int p) {
if (left > right)
return -1;
if (left == right) {
if (exponent(left, 5) == p)
return left;
else
return -1;
}
int mid = (left + right) / 2;
int k = exponent(mid, 5);
if (k > p)
return binary_search(left, mid, p);
else if (k < p)
return binary_search(mid+1, right, p);
else {
int t = binary_search(left, mid, p);
if (t != -1)
return t;
else
return mid;
}
}
int main () {
#ifndef CONSOLE
std::ifstream f ("fact.in");
std::ofstream g ("fact.out");
#endif
int p;
f >> p;
if (!p) {
g << 1;
return 0;
}
g << binary_search(0, 100000000, p);
}