Pagini recente » Cod sursa (job #1378900) | Cod sursa (job #2886617) | tema | Cod sursa (job #1459135) | Cod sursa (job #1243594)
#include <fstream>
using namespace std;
ifstream is("fact.in");
ofstream os("fact.out");
int st = 1, dr = 1000000000;
int p, v, m;
const int d1[] = { 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625 };
const int d2[] = { 0, 1, 6, 31, 156, 781, 3906, 19531, 97656, 488281, 24414406 };
int Calculeaza(int x);
int main()
{
is >> p;
if ( p == 0 )
os << 1;
else if ( p == 5 )
os << -1;
else
{
while ( st <= dr )
{
m = st + (dr-st)/2;
v = Calculeaza(m);
if ( v >= p )
dr = m-1;
else
st = m+1;
}
os << st;
}
is.close();
os.close();
return 0;
}
int Calculeaza(int x)
{
for ( int i = 0; i < 9; ++i )
if ( d1[i] <= x && d1[i+1] > x )
return ((x / 5) + d2[i]);
if ( x >= 9765625 )
return ((x / 5) + 9);
}