Pagini recente » Cod sursa (job #1748723) | Cod sursa (job #2916201) | Cod sursa (job #656515) | Cod sursa (job #557346) | Cod sursa (job #1526194)
#include<iostream>
#include<fstream>
using namespace std;
int p;
int solutie(long long n){
long long sum=0;
for(int i=5;n/i>0;i*=5)
sum+=n/i;
if(sum==p)
return 0;
if(sum>p)
return 1;
return -1;
}
int main(){
ifstream f("fact.in");
f>>p;
ofstream g("fact.out");
if(p==0){
g<<1;
g.close();
return 0;
}
long long solution=6*p;
long long lower_bound=0;
long long upper_bound=5*p;
while(lower_bound<=upper_bound){
long long mij=(lower_bound+upper_bound)/2;
if(solutie(mij)==0)
solution=min(solution,mij);
if(solutie(mij)==1 || solutie(mij)==0)
upper_bound=mij-1;
if(solutie(mij)==-1)
lower_bound=mij+1;
}
if(solution==6*p){
g<<-1;
g.close();
return 0;
}
g<<solution;
f.close();
g.close();
//system("pause");
return 0;
}