Cod sursa(job #1965319)

Utilizator BugirosRobert Bugiros Data 14 aprilie 2017 12:00:43
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <fstream>
using namespace std;

ifstream in("multiplu.in");
ofstream out("multiplu.out");

const int MAXN = 2000005;

int m;

int cmmdc(int a, int b)
{
    int aux;
    while(b != 0)
    {
        aux = a % b;
        a = b;
        b = aux;
    }
    return a;
}

int cmmmc(int a, int b)
{
    return a * b / cmmdc(a, b);
}

int coada[MAXN];
int p,q;
bool vizitat[MAXN];
int pred[MAXN];
char cifra[MAXN];

void prelucrare()
{
    p = 1, q = 1;
    coada[1] = 1;
    vizitat[1] = true;
    while(p <= q)
    {
        int x = coada[p];
        ++p;
        for (int cif = 0; cif <= 1;++cif)
        {
            int aux = (x * 10 + cif) % m;
            if (!vizitat[aux])
            {
                pred[aux] = x;
                vizitat[aux] = true;
                cifra[aux] = cif;
                coada[++q] = aux;
            }
        }
    }
}

void afisare()
{
    char rasp[MAXN];
    int l_rasp = 0;
    for (int x = 0;pred[x] != 0;x = pred[x])
        rasp[++l_rasp] = cifra[x];
    rasp[++l_rasp] = 1;
    for (int i = l_rasp;i >= 1;--i)
        out << (int)rasp[i];
    out << '\n';
}

int main()
{
    int a,b;
    in >> a >> b;
    m = cmmmc(a,b);
    prelucrare();
    afisare();
    return 0;
}