Pagini recente » Istoria paginii monthly-2014/runda-1 | Rating Trasca Alexandru (TrascaAlexandru) | Statistici Echipa Nyan (nyancat) | Cod sursa (job #151466) | Cod sursa (job #1691698)
# include <stdio.h>
# include <stdlib.h>
int cmmd( int nr ) {
int d;
for ( d = 2; d * d <= nr; d ++ )
if ( nr % d == 0 )
return nr / d;
return nr;
}
int nrZero( int nr, int baza ) {
int k;
k = 0;
while ( nr ) {
nr /= baza;
k += nr;
}
return k;
}
int src( int nr, int baza ) {
int pos, pas;
pos = 0;
for ( pas = 30; pas >= 0; pas -- )
if ( nrZero( pos + ( 1 << pas ), baza ) < nr )
pos += ( 1 << pas );
if ( nrZero( pos + 1, baza ) == nr )
return pos + 1;
else
return -1;
}
int main() {
FILE *fin = fopen( "gfact.in", "r" ), *fout = fopen( "gfact.out", "w" );
int p, q;
fscanf( fin, "%d%d", &p, &q );
fprintf( fout, "%d", src( q, cmmd( p ) ) );
fclose( fin );
fclose( fout );
return 0;
}