Pagini recente » Cod sursa (job #3258334) | Cod sursa (job #2741199) | Cod sursa (job #244302) | Cod sursa (job #2617831) | Cod sursa (job #2989885)
#include <fstream>
#include <climits>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
unsigned long long numberOfFactorialZeroes(unsigned long long number);
int main(){
unsigned long long numberOfZeroesRequired;
fin >> numberOfZeroesRequired;
unsigned long long left = 1, right = ULLONG_MAX, middle, numberOfZeroes, numberFound = 0;
while(left <= right){
middle = left + (right - left) / 2;
numberOfZeroes = numberOfFactorialZeroes(middle);
if(numberOfZeroes < numberOfZeroesRequired){
left = middle + 1;
}else{
numberFound = middle;
if(right == 0)
break;
right = middle - 1;
}
}
numberOfZeroes = numberOfFactorialZeroes(numberFound);
if(numberOfZeroes == numberOfZeroesRequired)
fout << numberFound;
else
fout << "-1";
return 0;
}
unsigned long long numberOfFactorialZeroes(unsigned long long number){
unsigned long long numberOfZeroes = 0, powersOf5 = 5;
while(powersOf5 <= number){
numberOfZeroes += number / powersOf5;
powersOf5 *= 5;
}
return numberOfZeroes;
}