Pagini recente » Cod sursa (job #1842438) | Cod sursa (job #1939576) | Cod sursa (job #1273822) | Cod sursa (job #1487565) | Cod sursa (job #2626203)
#include <fstream>
#include <iostream>
#include <climits>
int get_zeroes(unsigned int n) {
int zeroes = 0, mult5 = 5;
while (n / mult5) {
zeroes += n / mult5;
mult5 *= 5;
}
return zeroes;
}
unsigned int search(int zeroes, unsigned int begin, unsigned int end) {
if (begin >= end) {
return -1;
}
unsigned int mid = (begin + end) / 2;
int current_zeroes = get_zeroes(mid);
if (current_zeroes == zeroes)
return mid;
if (current_zeroes > zeroes)
return search(zeroes, begin, mid);
return search(zeroes, mid + 1, end);
}
int main()
{
std::ifstream f("fact.in");
std::ofstream g("fact.out");
int zeroes;
f >> zeroes;
if (!zeroes) {
g << 1 << "\n";
return 0;
}
unsigned int i = 1, j = INT_MAX;
g << (search(zeroes, i, j) / 5) * 5 << "\n";
}