Cod sursa(job #788906)
#include <fstream>
#include <cmath>
#define inputFile "fact.in"
#define outputFile "fact.out"
#define MAX 100000000000LL
using namespace std;
long long p;
long long countZ(long long end){
long long res = 0;
long long localMax = log2(end)/log2(5);
for(long long k=1; k<=localMax; k++){
res += ((long long) end / pow((double) 5, (double) k));
}
return res;
}
int main(){
ifstream in(inputFile);
in>>p ;
long long start = 0;
long long end = MAX;
ofstream output;
output.open(outputFile);
long long res;
if(p == 0)
start = 1;
else{
while(start < end){
long long mid = (start + end)/2;
res = countZ( mid) ;
if(res >= p)
end = mid;
else
start = mid +1;
}
if(countZ(start) != p)
start = -1;
}
output << start << endl;
output.close();
}