Cod sursa(job #399412)
Utilizator | Data | 20 februarie 2010 14:24:48 | |
---|---|---|---|
Problema | Factorial | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.54 kb |
#include <fstream>
using namespace std;
int nr5(int a){
int k=0,p=5;
for(int i=5;i<a;i*=5){
k+=a/i;
}
return k;
}
int main(){
fstream fin("fact.in",ios::in);
fstream fout("fact.out",ios::out);
unsigned beg=0,end=INT_MAX,mdl,p,res=-1;
fin>>p;
while(beg<=end){
int mdl=beg+(end-beg)/2;
int n5=nr5(mdl);
if(n5<p){
beg=mdl+1;
}else if(n5>p){
end=mdl-1;
}else{
res=mdl;
break;
}
}
if(res!=-1){
fout<<(res/5)*5;
}else{
fout<<-1;
}
fin.close();
fout.close();
return 0;
}