Cod sursa(job #58708)
| Utilizator | Data | 6 mai 2007 22:56:38 | |
|---|---|---|---|
| Problema | Factorial | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.55 kb |
#include<fstream.h>
#include<math.h>
#include<values.h>
ifstream in("fact.in");
ofstream out("fact.out");
long p;
long calc(int k)
{ long i=5,ret=0;
while(floor(k/i)>0)
{
ret=ret+(ceil(k/i));
i=i*5;
}
return ret;
}
int main()
{ long a=1,b=50000,ok,c,aux;
in>>p;
c=(a+b)/2;
ok=0;
while(a!=b)
{ c=(a+b)/2;
if(calc(c)==p) { a=b;ok=1;}
else
{ aux=calc(c);
if (p>aux) a=c+1;
else b=c-1;
}
}
if(ok==1) out<<c-3;
else out<<-1;
return 0;
}
