Pagini recente » Cod sursa (job #2849669) | Cod sursa (job #2150704) | Cod sursa (job #2393311) | Cod sursa (job #1490977) | Cod sursa (job #2851697)
#include <fstream>
using namespace std;
#define NRMAXZERO 100000000
int nrzerofact(unsigned long long int n) {
unsigned long long int p = 5;
int nrzero = 0;
while (n) {
nrzero += n / p;
n /= p;
}
return nrzero;
}
int main() {
ifstream fin("fact.in");
ofstream fout("fact.out");
int p = 0;
fin >> p;
unsigned long long int put[15] = {0};
int zerouri[15] = {0};
unsigned long long int x = 1;
int cnt = 0;
while (true) {
put[cnt] = x;
zerouri[cnt] = nrzerofact(x);
cnt++;
if (zerouri[cnt - 1] > NRMAXZERO)
break;
x *= 5;
}
int i = cnt - 1;
while (zerouri[i] > p)
i--;
unsigned long long int n = put[i];
int nrzero = zerouri[i];
int dif = p - nrzero;
while (i && dif) {
dif = p - nrzero;
i = cnt - 1;
while (zerouri[i] > dif && i)
i--;
n += put[i];
nrzero += zerouri[i];
}
if (nrzerofact(n) == p)
fout << n;
else
fout << -1;
return 0;
}