Pagini recente » Cod sursa (job #3244232) | Cod sursa (job #1623882) | Cod sursa (job #1352593) | Cod sursa (job #1686957) | Cod sursa (job #568097)
Cod sursa(job #568097)
#include <iostream>
#include <fstream>
using namespace std;
#define MM 20
long long Levels[MM];
long long Level5[MM];
long long N;
long long Fact;
long long FactLevel;
int main(void)
{
fstream f1("fact.in",ios::in);
fstream f2("fact.out",ios::out);
f1 >> N;
if (N < 0)
{
f2 << (-1);
f1.close();
f2.close();
return 0;
}
if (N == 0)
{
f2 << (signed int)(1);
f1.close();
f2.close();
return 0;
}
Levels[0] = 1;
Level5[0] = 5;
for (int i = 1;i < MM;i = i + 1)
{
Levels[i] = Levels[i - 1] * 5 + 1;
Level5[i] = Level5[i - 1] * 5;
}
Fact = 0;
FactLevel = MM - 1;
while (N > 0)
{
if (((N - Levels[FactLevel]) >= -FactLevel) && ((N - Levels[FactLevel]) < 0))
{
f2 << (signed int)(-1);
f1.close();
f2.close();
return 0;
}
while ((N - Levels[FactLevel]) >= 0)
{
N = N - Levels[FactLevel];
Fact += Level5[FactLevel];
}
if (FactLevel) if (!N)
{
f2 << (-1);
f1.close();
f2.close();
return 0;
}
FactLevel--;
}
f2 << Fact;
f1.close();
f2.close();
return 0;
}