Pagini recente » Cod sursa (job #824027) | Cod sursa (job #1831591) | Istoria paginii utilizator/mihaitoma | Cod sursa (job #1362449) | Cod sursa (job #1028192)
#include <fstream>
using namespace std;
ifstream is("fact.in");
ofstream os("fact.out");
int st = 1, dr = 1000000000;
const int d[] = { 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625 };
int p, m, nr;
bool Corect(int x);
bool Ver(int x);
int main()
{
is >> p;
while ( st < dr )
{
m = st + (dr-st)/2;
if ( Corect(m) )
dr = m;
else
st = m+1;
}
if ( Ver(st) )
os << st;
else
os << -1;
is.close();
os.close();
return 0;
}
bool Corect(int x)
{
int s = 0, v = x;
for ( int i = 0; v; ++i )
{
s += x / d[i];
v /= 10;
}
if ( s >= p )
return true;
return false;
}
bool Ver(int x)
{
int s = 0, v = x;
for ( int i = 0; v; ++i )
{
s += x / d[i];
v /= 10;
}
if ( s == p )
return true;
return false;
}