Pagini recente » Cod sursa (job #2709445) | Cod sursa (job #1319798) | Cod sursa (job #1674850) | Cod sursa (job #2500871) | Cod sursa (job #925439)
Cod sursa(job #925439)
#include <fstream>
#define NMAX 10000000
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
long pow[200], nr[200], n;
long search (long x)
{
for(long i = 0; i < n; i++)
if(nr[i] <= x && nr[i + 1] > x)
return i;
return -1;
}
long calc (long x)
{
long r, i;
r = 0;
while(x)
{
i = search(x);
r += x / nr[i] * pow[i];
x %= nr[i];
}
return r;
}
int main()
{
long p, res;
f>>p;
pow[0] = 1;
nr[0] = 0;
for(n = 1; nr[n - 1] <= NMAX; n++)
{
nr[n] = pow[n - 1] + nr[n - 1];
pow[n] = pow[n - 1] * 5;
}
if(p == 0)
{
g << '1' << '\n';
}
else
{
res = calc(p);
if(res == calc(p + 1))
g << -1 << '\n';
else
g << res << '\n';
}
}