Cod sursa(job #2159084)
| Utilizator | Data | 10 martie 2018 18:49:42 | |
|---|---|---|---|
| Problema | Factorial | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.75 kb |
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int n,p,i,st,dr,med,k,s;
int dx[19]={
25,
125,
625,
3125,
15625,
78125,
390625,
1953125,
9765625,
48828125,
244140625,
1220703125};
int main()
{
fin>>p;
st=1;
dr=2100000000;
while(st<=dr)
{
med=(st+dr)>>1;
s=s+med/5;
for(i=0;i<=11;i++)
if(med>=dx[i])
s=s+i+1;
if(s==p)
{
k=med;
dr=med-1;
}
else
if(s<p)
st=med+1;
else
dr=med-1;
//fout<<med<<endl;
s=0;
}
if(k)
fout<<k;
else
fout<<-1;
return 0;
}
