Pagini recente » Cod sursa (job #1922624) | Cod sursa (job #2685754) | Cod sursa (job #2455066) | Cod sursa (job #1277031) | Cod sursa (job #2233639)
#include <fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
int v[100000002];
int p;
int cautarebinara(int p)
{
int x = 1;
while(x < p)
x *= 5;
x /= 5;
int stanga = 1, dreapta = 5 * p + 1, mijloc = -1, nr = 0;
while(stanga <= dreapta)
{
nr = 0;
mijloc = (stanga + dreapta) / 2;
int j = 1;
while(j <= mijloc)
j *= 5;
j /= 5;
for(int i = 5; i <= j; i *= 5)
{
nr = nr + (mijloc / i);
}
if(nr == p)
return mijloc - mijloc % 5;
if(nr < p)
stanga = mijloc + 1;
if(nr > p)
dreapta = mijloc - 1;
}
return -1;
}
int main()
{
fin >> p;
if(p == 0)
{
fout << 1;
return 0;
}
if(p < 5)
{
fout << p * 5;
return 0;
}
if(p == 5)
{
fout << -1;
return 0;
}
fout << cautarebinara(p);
return 0;
}