Cod sursa(job #2815014)

Utilizator Catalinu23Gavrila Catalin Catalinu23 Data 8 decembrie 2021 23:09:35
Problema Multiplu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
#define NMAX 2000005
using namespace std;

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

int a,b,m;
int viz[NMAX], p[NMAX];
queue<int> q;

void Afisare(int x)
{
    if(x==1) fout<<1;
    else
    {
        Afisare(p[x]);
        if((p[x]*10)%m == x) fout<<0;
        else fout<<1;
    }
}

int main()
{
    fin>>a>>b;
    m = (a*b)/__gcd(a,b);
    q.push(1), viz[1] = 1;
    while(1)
    {
        int x = q.front();
        q.pop();
        int val = x*10 % m;
        if(!viz[val])
        {
            p[val] = x;
            viz[val] = 1;
            if(val == 0) break;
            q.push(val);
        }
        val = (x*10+1) % m;
        if(!viz[val])
        {
            p[val] = x;
            viz[val] = 1;
            if(val == 0) break;
            q.push(val);
        }
    }
    Afisare(0);
    return 0;
}