Pagini recente » Cod sursa (job #2781699) | Cod sursa (job #784873)
Cod sursa(job #784873)
# include <fstream>
using namespace std;
int c[] =
{
1 , 5 , 25 , 125 , 625 , 3125 , 15625 , 78125 ,
390625 , 1953125 , 9765625 , 48828125 , 244140625
};
int c1[] =
{
0 , 1 , 6 , 31 , 156 , 781 , 3906 , 19531 ,
97656 , 488281 , 2441406 , 12207031 , 61035156
};
int caut_b( int tinta ){
short li,ls,mij,poz = 0;
li = 0 ;
ls = 12 ;
while( li <= ls )
{
mij = ( li +ls ) / 2;
if( c1[mij] <= tinta && poz < mij ) poz = mij;
if( c1[mij] <= tinta )
li = mij + 1;
else
ls = mij - 1;
}
return poz;
}
int main(){
ifstream in("fact.in");
ofstream out("fact.out");
int p,p1,nr = 0,temp,nr1 = 0;
in >> p;
if( !p )
{
out << 1;
in.close();
out.close();
return 0;
}
p1 = p;
while(p1)
{
temp = caut_b(p1);
nr += c[temp];
p1 -= c1[temp];
}
p1 = 0;
for( short i = 2 ; i <= 12 ; ++i )
if( nr % c[i] == 0 )
++p1;
if( p1 == 0 )
out << nr;
else
{
++p;
while(p)
{
temp = caut_b(p);
nr1 += c[temp];
p -= c1[temp];
}
if( nr == nr1 )
out << -1;
else
out << nr;
}
in.close();
out.close();
return 0;
}