Pagini recente » Cod sursa (job #2802291) | Cod sursa (job #503350) | Cod sursa (job #57645) | Cod sursa (job #17650) | Cod sursa (job #1518921)
#include <fstream>
using namespace std;
int main()
{
ifstream ii("fact.in");
ofstream oo("fact.out");
unsigned i, p, nr, n, l; ii >> p;
if (p < 0)
{
oo << -1; return 0;
}
if (p == 0)
{
oo << 1; return 0;
}
for (l = i = 1; i*5 + 1 <= p; l++)
i = i*5 + 1;
unsigned zero[l + 1], put[l + 1]; zero[1] = 1; put[1] = 5;
for (i = 2; i <= l; i++)
zero[i] = 5*zero[i - 1] + 1, put[i] = put[i-1] * 5;
unsigned short ture = 0;
for (nr = 0, n = 0, i = l; i; i--, ture = 0)
{
while (nr + zero[i] <= p && ture < 5)
nr += zero[i], n += put[i], ture++;
if (ture == 5)
{
oo << -1; return 0;
}
if (nr == p)
{
oo << n; return 0;
}
if (nr < p && i == 1)
{
oo << -1; return 0;
}
}
}