Pagini recente » Cod sursa (job #1598368) | Cod sursa (job #1896635) | Cod sursa (job #1020027) | Cod sursa (job #1089771) | Cod sursa (job #925430)
Cod sursa(job #925430)
#include <fstream>
#define NMAX 10000000
using namespace std;
ifstream f("fact.in");
ofstream g("fact.out");
int pow[200], nr[200], n;
int search (int x)
{
for(int i = 0; i < n; i++)
if(nr[i] <= x && nr[i + 1] >= x)
return i;
return -1;
}
int calc (int x)
{
int r, i;
r = 0;
while(x)
{
i = search(x);
r += x / nr[i] * pow[i];
x %= nr[i];
}
return r;
}
int main()
{
int p, i, 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';
}
}