Pagini recente » Cod sursa (job #1017035) | Cod sursa (job #878642) | Cod sursa (job #3285818) | Cod sursa (job #243703) | Cod sursa (job #925442)
Cod sursa(job #925442)
#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, 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';
}
}