Pagini recente » Cod sursa (job #838481) | Cod sursa (job #2368568) | Cod sursa (job #2994) | Cod sursa (job #1578461) | Cod sursa (job #726688)
Cod sursa(job #726688)
#include <fstream>
using namespace std;
int nrZeros(int);
int solve(int);
int main(void) {
ifstream fin("fact.in"); int nr;
fin >> nr;
fin.close();
ofstream fout("fact.out");
fout << solve(nr);
fout.close();
}
int solve(int zeros) {
int step, pos;
for(step = 1; step < 1000000000; step <<= 1) {}
for(pos = 0; step != 0; step >>= 1)
if(pos + step < 1000000000 && nrZeros(pos + step) < zeros)
pos += step;
if(nrZeros(pos + 1) == zeros)
return pos + 1;
return -1;
}
int nrZeros(int x) {
int zeros = 0;
for(int pow = 5; pow <= x; pow *= 5)
zeros += x / pow;
return zeros;
}
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// + + + + +
// +