Cod sursa(job #478191)
# include <cstdio>
# include <queue>
using namespace std;
const char FIN[] = "multiplu.in", FOU[] = "multiplu.out";
const int MAX = 2000006 ;
int A, B ;
int prev[MAX] ;
bool digit[MAX] ;
queue < int > Q ;
inline int cmmdc ( int A, int B ) {
while ( B ) {
int R = A % B ;
A = B ;
B = R ;
}
return A ;
}
inline int cmmmc ( int A, int B ) {
return A * B / cmmdc ( A, B ) ;
}
void scrie ( int A ) {
if ( A != 1 ) {
scrie ( prev [ A ] ) ;
}
printf ( "%d", digit [ A ] ) ;
}
int main ( void ) {
freopen ( FIN, "r", stdin ) ;
freopen ( FOU, "w", stdout ) ;
scanf ( "%d %d", &A, &B ) ;
A = cmmmc ( A, B ) ;
prev[1 % A] = digit[1 % A] = 1 ;
for ( Q.push ( 1 % A ) ; ! Q.empty () ; Q.pop () ) {
int C = Q.front () ;
for ( int i = 0; i < 2; ++i ) {
int Cn = ( C * 10 + i ) % A ;
if ( prev [ Cn ] == 0 ) {
prev [ Cn ] = C ;
digit [ Cn ] = i ;
Q.push ( Cn ) ;
}
}
}
scrie ( 0 ) ;
return 0 ;
}