Pagini recente » Cod sursa (job #2382346) | Cod sursa (job #1888315) | Cod sursa (job #876809) | Cod sursa (job #3172264) | Cod sursa (job #2115006)
#include <fstream>
int zeroCounter(int iNumber) {
int iPower = 5, iCounter = 0;
while (iNumber / iPower) {
iCounter += iNumber / iPower;
iPower *= 5;
}
return iCounter;
}
int exponentialSearch(int iZeros) {
int iCurrent, iCurr;
for (iCurrent = 1; zeroCounter(iCurrent) < iZeros; iCurrent <<= 1); /// Exponential Search find interval
for (iCurr = iCurrent >> 1; zeroCounter(iCurr) < iZeros; iCurr++); /// Found interval
return zeroCounter(iCurr) == iZeros? iCurr : -1; /// Check if such a number exists
}
int main() {
int iZeros;
std::ifstream fin ("fact.in");
fin >> iZeros;
std::ofstream fout("fact.out");
if (iZeros == 0)
fout << "1\n";
else fout << exponentialSearch(iZeros) << "\n";
fout.close();
return 0;
}