Pagini recente » Cod sursa (job #2836704) | Cod sursa (job #126428) | Cod sursa (job #2927367) | Cod sursa (job #205782) | Cod sursa (job #476933)
Cod sursa(job #476933)
#include<fstream>
#include<iostream>
using namespace std;
ifstream fin("fact.in");
ofstream fout("fact.out");
long p, n;
//calculand la ce putere apare 5 in descopunerea in fact. primi
//a lui x! det. nr. de 0 de la sf. lui x!
long nr_zerouri( long x )
{
long x2 = x, div5 = 5, putere=0;
while ( x2 >= 5 )
{
putere += x / div5;
x2 /= 5;
div5 *= 5;
}
return putere;
}
//caut binar n-ul cerut
void cautaN( long a, long b, int p )
{
long c = (a+b)/2, zero;
if ( a <= b )
{
zero = nr_zerouri(c);
if ( zero == p )
n = c;
else
if ( zero <= p )
cautaN( c+1, b, p );
else
cautaN( a, c-1, p );
}
else n = -1;
}
//caut cel m. mic n cu propr. data
void minimizeaza( long &n )
{
n = (n/5)*5;
if ( n == 0 ) n = 1;
}
int main()
{
long a = 0, b = 410000000;
fin >> p;
cautaN( a, b, p );
if ( n != -1 )
minimizeaza( n );
fout << n << endl;
fin.close();
fout.close();
return 0;
}