Cod sursa(job #114800)

Utilizator dominoMircea Pasoi domino Data 15 decembrie 2007 22:32:05
Problema Multiplu Scor Ascuns
Compilator cpp Status done
Runda Marime 0.84 kb
#include <stdio.h>

#define MAX_AB 2000005
#define FIN "multiplu.in"
#define FOUT "multiplu.out"

int A, B, T[MAX_AB][2], Q[MAX_AB];
char D[MAX_AB];

void trace(int c)
{
    if (c == B+1) { printf("1"); return; }
    trace(T[c][0]);
    printf("%d", T[c][1]);
}

int main(void)
{
    int i, a, b, c, aa, bb, cc, ql, qr;

    freopen(FIN, "r", stdin);
    freopen(FOUT, "w", stdout);

    scanf("%d %d", &A, &B);

    for (D[Q[ql = qr = 0] = B+1] = 1; ql <= qr; ++ql)
    {
        c = Q[ql], a = c/B, b = c%B;
        for (i = 0; i < 2; ++i)
        {
           aa = (a*10+i)%A;
           bb = (b*10+i)%B;
           cc = aa*B+bb;
           if (D[cc]) continue;
           D[cc] = D[c]+1;
           T[cc][0] = c; 
           T[cc][1] = i;
           Q[++qr] = cc;
        }
    }
    trace(0);

    return 0;
}