Pagini recente » Cod sursa (job #2414533) | Cod sursa (job #756026) | Cod sursa (job #2909942) | Cod sursa (job #2844926) | Cod sursa (job #1081774)
#include <fstream>
using namespace std;
ifstream f ("fact.in");
ofstream g("fact.out");
int n,p,i;
int MAX = 5 * 100000000;
int caut_binar(int MAX, int p)
{
int k = 0, i, st = 1, dr = MAX;
int m = (dr+st)/2;
if (p == 0) return 1;
while (k != p && st != dr)
{
k = 0;
i = 5;
while (i < m)
{
k += m/i;
i *= 5;
}
if (k > p)
{
dr = m - 1;
m = (st+dr)/2;
}
if (k < p)
{
st = m + 1;
m = (st+dr)/2;
}
if (st >= dr) return -1;
}
st = m;
while (k == p)
{
if (k != p) return st;
k = 0;
i = 5;
while (i <= st)
{
k += st/i;
i *= 5;
}
if (k == p) m = st;
st --;
}
return m;
}
int main ()
{
f >> p;
n = caut_binar(MAX,p);
g << n;
f.close();
g.close();
return 0;
}