Cod sursa(job #2264264)

Utilizator aturcsaTurcsa Alexandru aturcsa Data 19 octombrie 2018 22:37:01
Problema Multiplu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;

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

int a, b, M;
int S[10000002],G[10000002];
bool v[10000002];
queue<int> Q;

void afis(int x){
    if(G[x])
    {
        afis(G[x]);
        fout << S[x];
    }
    else
        fout << 1;
}

int main()
{
    fin>>a>>b;
    M=(a*b)/__gcd(a,b);
    Q.push(1);
    v[1]=1;
    S[1]=1;
    G[1]=0;
    while(!Q.empty())
    {
        int x=Q.front();
        Q.pop();
        if(x==0)
        {
            afis(0);
            break;
        }
        int mod1 = (x*10)%M;
        if(!v[mod1])
        {
            v[mod1]=true;
            Q.push(mod1);
            G[mod1]=x;
            S[mod1]=0;
        }

        int mod2=(x*10+1)%M;
        if(!v[mod2])
        {
            v[mod2]=true;
            Q.push(mod2);
            G[mod2]=x;
            S[mod2]=1;
        }
    }
    return 0;
}