Pagini recente » Profil Andrei-27 | Cod sursa (job #313048) | Cod sursa (job #289997) | Cod sursa (job #2014631) | Cod sursa (job #477046)
Cod sursa(job #477046)
#define DEBUG 0
#include <fstream>
using namespace std;
#define iszero() { if (current == zeros) return -1; if (current > zeros) return countexc; }
inline int nr_exceptions(int zeros)
{
int current = 0, countexc = 0, tmp;
for (int l = 1; ; l++)
{
for (int i = 0; i < 5; i++) {
for (int j = 6; j<=30; j+=6) {
current += 6; countexc++; iszero();
}
current += 1; countexc++; iszero();
}
current += 1; countexc++; iszero();
if (current == zeros) return -1;
for (tmp = l; tmp > 0 && tmp % 5 == 0; tmp/=5) {
current += 1; countexc++; iszero();
}
}
return countexc;
}
int main()
{
int P, r;
ifstream in ("fact.in"); ofstream out ("fact.out");
in>>P;
#if DEBUG == 1
for (int i = 0; i < 10000; i++) {
P = i;
out<<"["<<i<<"] -> ";
#endif
if (P == 0) out<<1;
else {
r = nr_exceptions(P+1);
if (r == -1) out<<-1;
else out<<(P+1-r)*5;
}
#if DEBUG == 1
out<<endl;
}
#endif
in.close();
out.close();
}