Pagini recente » Cod sursa (job #412331) | Cod sursa (job #584314) | Cod sursa (job #757950) | Cod sursa (job #1225775) | Cod sursa (job #1188424)
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
unsigned long long p, V[50];
inline unsigned long long fact(int n)
{
int s = 0, i = 1;
while(V[i] <= n) s += n / V[i++];
return s;
}
int main()
{
fin >> p;
if(p == 0) { fout << "1\n"; fout.close(); return 0; }
V[0] = 1;
for(int i=1; i<=30; i++) V[i] = V[i-1] * 5;
int st = 1, dr = p * 5, mij, w = 1;
while(st <= dr && w)
{
mij = (st + dr) / 2;
int zero = fact(mij);
if(zero == p) w = 0;
else if(zero < p) st = mij + 1;
else if(zero > p) dr = mij - 1;
}
if(w) fout << "-1\n";
else fout << mij - mij % 5 << '\n';
fout.close();
return 0;
}