Pagini recente » Borderou de evaluare (job #1292445) | Cod sursa (job #2693472)
#include <iostream>
#include <climits>
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
long long zerourifact(long long n)
{
long long p , s;
p = 5; s = 0;
while(p <= n)
{
s = s + n/p ;
p = p * 5;
}
return s;
}
long long cb(long long p)
{
long long st, dr, m, z;
st = 1; dr = LLONG_MAX;
while(st <= dr)
{
m = (st + dr) /2 ;
z = zerourifact(m);
if(z == p)return m;
else if(z > p)dr = m - 1;
else st = m + 1;
}
}
int main()
{
long long p, z;
fin >> p;
z = cb(p);
while(z % 5 != 0)
z-- ;
if(p == 0)fout << 1;
else
fout << z;
return 0;
}