Pagini recente » Cod sursa (job #984859) | Cod sursa (job #3261041) | Cod sursa (job #2130741) | Cod sursa (job #2969528) | Cod sursa (job #801516)
Cod sursa(job #801516)
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int binary_search(int lo, int hi, int x);
int count_zeros(int x);
int main()
{
int p;
fin >> p;
if (p == 0) {
fout << 1;
} else {
fout << binary_search(1, 6 * p, p);
}
}
int binary_search(int lo, int hi, int x) {
while (lo < hi) {
int mid = lo + (hi - lo) / 2;
int numZeros = count_zeros(mid);
if (numZeros == x && mid % 5 == 0) {
return mid;
} else if (numZeros < x) {
lo = mid + 1;
} else {
hi = mid;
}
}
if (lo >= hi) {
return -1;
}
}
int count_zeros(int x) {
int result = 0, five = 5;
while (x / five > 0) {
result += x / five;
five *= 5;
}
return result;
}