Cod sursa(job #1022852)
| Utilizator | Data | 6 noiembrie 2013 00:16:08 | |
|---|---|---|---|
| Problema | Factorial | Scor | 5 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.61 kb |
#include<iostream>
#include<fstream>
using namespace std;
long long fact (long long x)
{
long long nr=0,p=5;
while(x>=p)
{
nr=nr+x/p;
p*=5;
}
return nr;
}
int main()
{
long long p,li=1,ls,m,cal;
int ok=1;
ifstream f("fact.in");
ofstream g("fact.out");
f>>p;
ls=5*p;
if(p==0) g<<1;
else{
while(li<=ls && ok)
{
m=(li+ls)/2;
cal=fact(m);
if(cal==p) ok=0;
else if(cal>=p) ls=m-1;
else ls=m+1;
}
if (!ok && m>5) g<<m-m%5;
else if (!ok) g<<m;
else g<<-1;}
}
