Cod sursa(job #780053)
| Utilizator | Data | 19 august 2012 19:22:26 | |
|---|---|---|---|
| Problema | Factorial | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.55 kb |
#include <fstream>
#include <math.h>
using namespace std;
int numZero(int x){
int k=0,q=1;
while(x/pow(5,q)){
k+=x/pow(5,q);
q++;
}
return k;
}
int main()
{long p,lt=1,rt,m;
ifstream f("fact.in");
ofstream g("fact.out");
f>>p;
rt=5*p;
f.close();
while(lt<=rt){
m=(lt+rt)/2;
if(p<=numZero(m))
rt=m-1;
else
lt=m+1;
}
if(!p)
g<<1;
else{if(p==numZero(lt))
g<<lt;
else
g<<-1;}
g.close();
return 0;
}
