Pagini recente » Istoria paginii runda/oni2011_9_2/clasament | Cod sursa (job #732751) | Cod sursa (job #2151371) | Cod sursa (job #2446229) | Cod sursa (job #1211160)
#include <fstream>
using namespace std;
int factNumarZerouri(double n)
{
int nr = 0, x, pow = 5;
for (;;)
{
x = (int)(n / pow);
if (x == 0)
break;
nr += x;
pow *= 5;
}
return nr;
}
int factCautareBinara(int p, int st, int dr)
{
if (st > dr)
return -1;
int mij = ( st + dr ) / 2;
int nrZerouri = factNumarZerouri(mij);
if (nrZerouri == p)
{
while (mij % 5 != 0)
mij --;
return mij;
}
else if (nrZerouri > p)
return factCautareBinara(p, st, mij - 1);
else
return factCautareBinara(p, mij + 1, dr);
}
int main(int argc, char** argv)
{
int p;
ifstream in("fact.in");
ofstream out("fact.out");
in >> p;
if (p == 0)
out << 1;
else
out << factCautareBinara(p, 1, p*5);
in.close();
out.close();
return 0;
}