Pagini recente » Cod sursa (job #1013439) | Cod sursa (job #1266665) | Cod sursa (job #2888642) | Cod sursa (job #672919) | Cod sursa (job #2793012)
#include <fstream>
bool check(size_t n, size_t p) {
size_t x = 0;
size_t i = 5;
while(n >= i) {
x += n / i;
i *= 5;
}
return x >= p;
}
bool _check(size_t n, size_t p) {
size_t x = 0;
size_t i = 5;
while(n >= i) {
x += n / i;
i *= 5;
}
return x == p;
}
size_t find(size_t n) {
size_t low = 0;
size_t high = 5 * n;
size_t mid;
if(n == 1)
return 5;
while(low < high) {
mid = (low + high) / 2;
if(check(mid, n)) {
high = mid;
} else {
low = mid + 1;
}
}
return low;
}
int main() {
std::ifstream f("fact.in");
std::ofstream o("fact.out");
size_t n;
f >> n;
size_t answer = find(n);
(_check(answer, n)) ? o << answer : o << -1;
f.close();
o.close();
}