Cod sursa(job #2940966)

Utilizator AnSeDraAndrei Sebastian Dragulescu AnSeDra Data 16 noiembrie 2022 20:20:58
Problema Multiplu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <queue>

using namespace std;

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

#define Nmax 2000000

int p;
int previ[Nmax + 1];
queue<int> q;

void reconst(int x)
{
    if(previ[x] == -1)
    {
        fout << 1;
        return;
    }

    reconst(previ[x]);

    if(((previ[x]) * 10) % p == x)
    {
        fout << 0;
    }
    else
    {
        fout << 1;
    }
}

int main()
{
    int a, b, r, r1, r2, aa, bb;

    fin >> a >> b;

    aa = a;
    bb = b;
    while(bb != 0)
    {
        r = aa % bb;
        aa = bb;
        bb = r;
    }
    p = a * b / aa;

    r = 1;
    q.push(1);
    previ[1] = -1;
    while(!q.empty())
    {
        r = q.front();
        q.pop();

        r1 = (r * 10) % p;
        r2 = (r * 10 + 1) % p;

        if(previ[r1] == 0)
        {
            previ[r1] = r;
            q.push(r1);
        }

        if(previ[r2] == 0)
        {
            previ[r2] = r;
            q.push(r2);
        }
    }

    reconst(0);

    return 0;
}