Pagini recente » Cod sursa (job #540632) | Cod sursa (job #734154) | Cod sursa (job #949542) | Cod sursa (job #2411565) | Cod sursa (job #807089)
Cod sursa(job #807089)
#include <iostream>
#include <fstream>
using namespace std;
int number_of_zeros(int number) {
int zeros = 0;
while (number / 5) {
zeros += number / 5;
number /= 5;
}
// cout << "zeros: " << zeros << endl;
return zeros;
}
int binary_search(int left, int right, int p) {
int middle;
int zeros;
while (left < right) {
middle = right - (right - left) / 2;
zeros = number_of_zeros(middle);
if (zeros > p) {
right = middle - 1;
}
if (zeros < p) {
left = middle + 1;
}
if (zeros == p) {
return middle;
}
}
return -1;
}
int main() {
int left = 0;
int right = 100000000;
int p;
int number;
ifstream input;
ofstream output;
input.open("fact.in");
input >> p;
input.close();
if (p == 0) {
number = 1;
} else {
number = binary_search(left, right, p);
if (number != -1) {
for (; number_of_zeros(number) == p; --number);
++number;
}
}
output.open("fact.out");
output << number;
output.close();
return 0;
}