Pagini recente » Borderou de evaluare (job #1580214) | Borderou de evaluare (job #1486843) | Borderou de evaluare (job #3166070) | Borderou de evaluare (job #1845500) | Cod sursa (job #3231758)
#include<fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
const int NMAX = 1e8;
int nr_0(int m)
{
long long p5=5,cnt=0;
while(p5<=m)
{
cnt+=m/p5;
p5*=5;
}
return cnt;
}
int Factorial(int P)
{
long long st = 1, dr = NMAX*5, rez = -1;
while(st <= dr)
{
int m = (st+dr)/2;
if(nr_0(m) == P)
rez = m, dr = m-1;
if(nr_0(m) < P)
st = m+1;
if(nr_0(m) > P)
dr = m-1;
}
return rez;
}
int main()
{
int P;
fin >> P;
fout << Factorial(P) << "\n";
}