Pagini recente » Cod sursa (job #2679475) | Cod sursa (job #532527) | Cod sursa (job #135519) | Cod sursa (job #2853301) | Cod sursa (job #953572)
Cod sursa(job #953572)
#include <fstream>
unsigned f(unsigned n){ //f(n) = in cate 0-uri se temina n!
unsigned a=5,ret=0;
while(n/a>0){
ret+=n/a;
a*=5;
}
return ret;
}
int main(){
std::ifstream fin("fact.in");
std::ofstream fout("fact.out");
unsigned P;
fin>>P;
if(P==0) fout<<"1\n";
else{
unsigned max,min,mid,temp;
max = 5*P;
min = 1;
bool talal=false;
while(min<=max && !talal){
mid = min + (max-min)/2;
temp=f(mid);
if(temp<P) min=mid+1;
else if(temp==P){ talal=true; }
else max=mid-1;
}
if(!talal) fout<<"-1\n";
else{
while(f(mid-1)==P) mid--;
fout<<mid<<'\n';
}
}
}