Cod sursa(job #530831)
#include<fstream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
#define INF 1000000000000000000LL
long long p;
long long rasp;
void Search(long long st, long long dr );
int OK( long long x );
int main()
{
fin >> p;
/*
if( p == 1 )
fout << -1;
*/
rasp = 0;
Search( 1, INF );
fin.close();
fout.close();
return 0;
}
void Search( long long st, long long dr )
{
if( st >= dr )
{
if( rasp != 0 )
fout << rasp;
else
fout << -1;
exit(0);
}
long long mij = (st + dr) / 2;
int rez = OK( mij );
if( rez == 0 )
Search(st, mij);
if( rez == 1 )
Search( mij+1, dr);
if( rez == -1 )
Search( st, mij );
}
int OK( long long x )
{
long long nr0 = 0;
long long aux;
aux = x;
while( aux / 5 >= 1 )
{
nr0 += aux/5;
aux = aux/5;
}
//fout << nr0 << ' ';
if( nr0 == p )
{
rasp = x;
return 0;
}
if( nr0 > p )
return -1;
if( nr0 < p )
return 1;
}