Pagini recente » Cod sursa (job #2443583) | Cod sursa (job #2595489) | Cod sursa (job #1926529) | Cod sursa (job #237957) | Cod sursa (job #2851698)
#include <iostream>
#include <fstream>
using namespace std;
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];
int zerouri[15];
unsigned long long int x = 1;
int cnt = 0;
while (true) {
put[cnt] = x;
zerouri[cnt] = nrzerofact(x);
cnt++;
if (nrzerofact(x) > 100000000)
break;
x *= 5;
}
int i = cnt - 1;
while (true) {
if (zerouri[i] <= p)
break;
i--;
}
unsigned long long int n = put[i];
int nrzero = zerouri[i];
while (i) {
int dif = p - nrzero;
i = cnt - 1;
while (zerouri[i] > dif && zerouri[i])
i--;
if (!i)
break;
n += put[i];
nrzero += zerouri[i];
}
if (nrzerofact(n) == p)
fout << n;
else
fout << -1;
return 0;
}