Pagini recente » Cod sursa (job #2886606) | Cod sursa (job #2886605) | Cod sursa (job #2706649) | Cod sursa (job #2988720) | Cod sursa (job #2188316)
#include <fstream>
#include <cstdint>
int32_t zeroCount(int32_t x) {
int32_t nr{}, imp{5};
while (x >= imp) {
nr += x / imp;
imp *= 5;
}
return nr;
}
int main() {
int32_t p{};
std::ifstream{"fact.in"} >> p;
int32_t left{1}, right{5 * p}, mid{}, nr{-1};
while (left <= right) {
mid = left + (right - left) / 2;
auto zero{zeroCount(mid)};
if (zero == p)
nr = mid;
if (zero >= p)
right = mid - 1;
else
left = mid + 1;
}
std::ofstream{"fact.out"} << (p ? nr : 1);
}