Cod sursa(job #1511417)
| Utilizator | Data | 26 octombrie 2015 18:50:02 | |
|---|---|---|---|
| Problema | Factorial | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.65 kb |
#include <fstream>
#include <climits>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
long long check(long long x)
{
long long nr0=0,h5=5;
while(h5<=x)
{
nr0=nr0+x/h5;
h5=h5*5;
}
return nr0;
}
int main()
{
long long p,l,r,mid,sol;
int ok;
fin>>p;
if (p==0){fout<<"1\n";}
else
{
l=1;
r=LONG_LONG_MAX;
ok=1;
while(l<=r)
{
mid=(l+r)/2;
if(check(mid)<p){l=mid+1;}
else{r=mid-1;sol=mid;ok=0;}
}
if(ok){fout<<"-1\n";}
else{fout<<sol<<"\n";}
}
}
