Cod sursa(job #809036)
#include<fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
unsigned long long zero(unsigned long long nr){
unsigned long long nrZero = 0;
while(nr){
nrZero += nr/5;
nr/=5;
}
return nrZero;
}
unsigned long long fact(unsigned long long p){
unsigned long long hi = 1<<30,rez,lo=0,mid;
if(p == 0) return 1;
while(hi - lo > 1){
mid = lo + (hi-lo)/2;
rez = zero(mid);
if(p == rez) return mid;
else if(p < rez) hi = mid - 1;
else lo = mid + 1;
}
return 0;
}
int main(){
unsigned long long rezFinal,p;
fin>>p;
rezFinal = fact(p);
if(rezFinal > 5){
fout << rezFinal - rezFinal%5<<"\n";
} else if(rezFinal) fout << rezFinal<<"\n";
else fout << "-1\n";
fin.close();
fout.close();
return 0;
}