Pagini recente » Cod sursa (job #474517) | Cod sursa (job #1492836) | Cod sursa (job #417524) | Cod sursa (job #2940703) | Cod sursa (job #1564929)
#include <fstream>
using namespace std;
int numberOfZeroes(unsigned int n)
{
int count = 0;
for (int i = 5; n / i >= 1; i *= 5)
{
count += n / i;
}
return count;
}
int binarySearch(unsigned int left, unsigned int right, unsigned int target)
{
int mid = (left + right) / 2;
int nz = numberOfZeroes(mid);
if (nz == target)
{
if(mid - mid % 5 > 0)
return mid - (mid % 5);
else return 1;
}
else
{
if (left == right)
{
return -1;
}
if (nz > target)
{
return binarySearch(left, mid, target);
}
else
{
return binarySearch(mid + 1, right, target);
}
}
}
int main()
{
const int max = 1 << 31;
unsigned int P;
ifstream f("fact.in");
f >> P;
f.close();
ofstream g("fact.out");
g << binarySearch(0, max, P);
g.close();
return 0;
}