Cod sursa(job #2792996)
Utilizator | v edmond vzze | Data | 2 noiembrie 2021 17:40:23 |
---|---|---|---|
Problema | Factorial | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.49 kb |
#include <iostream>
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;
while(low < high) {
size_t mid = (low + high) / 2;
if(check(mid, n))
high = mid - 1;
else
low = mid + 1;
}
return low;
}
int main() {
size_t n; std::cin >> n; std::cout << find(n);
}