Pagini recente » Cod sursa (job #1368806) | Cod sursa (job #2744227) | Cod sursa (job #1113810) | Cod sursa (job #599428) | Cod sursa (job #1243588)
#include <fstream>
using namespace std;
ifstream is("fact.in");
ofstream os("fact.out");
int st = 1, dr = 1000000000;
int p, v, m;
const int d[] = { 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625 };
int Calculeaza(int x);
void Gasit(int x);
int main()
{
is >> p;
if ( p == 0 )
os << 1;
else
{
while ( st <= dr )
{
m = st + (dr-st)/2;
v = Calculeaza(m);
if ( p == v )
{
Gasit(m);
break;
}
if ( v < p )
st = m + 1;
else
dr = m - 1;
}
if ( st > dr )
os << -1;
}
is.close();
os.close();
return 0;
}
int Calculeaza(int x)
{
for ( int i = 0; i < 9; ++i )
if ( d[i] <= x && d[i+1] > x )
return ((x / 5) + i);
if ( x >= 9765625 )
return ((x / 5) + 9);
}
void Gasit(int x)
{
while ( x % 5 != 0 )
x--;
os << x;
}