Pagini recente » Cod sursa (job #1895589) | Cod sursa (job #247961) | Cod sursa (job #1929518) | Cod sursa (job #1241057) | Cod sursa (job #1837964)
/*
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
typedef unsigned long long l;
l exponent (l n, int k) {
l t = n / k;
l a = k;
l sum = 0;
while (t) {
sum += t;
a *= k;
t = n / a;
}
return sum;
}
l binary_search (l left, l right, int p) {
if (left > right)
return -1;
if (left == right) {
if (exponent(left, 5) == p)
return left;
else
return -1;
}
l mid = (left + right) / 2;
l 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 {
l 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, 100000000000, p);
}