Cod sursa(job #478191)

Utilizator SpiderManSimoiu Robert SpiderMan Data 17 august 2010 18:33:03
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
# 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 ;
}