Cod sursa(job #3189149)

Utilizator AlexSerban21Serban Alexandru AlexSerban21 Data 4 ianuarie 2024 16:12:18
Problema Multiplu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <fstream>
#include <queue>
#include <bitset>
using namespace std;
ifstream fin ("multiplu.in");
ofstream fout ("multiplu.out");
int a,b,x,i,nrn,nr,ok;
queue <int> q;
bitset <2000001> viz;
pair <int,bool> t[2000001];
int cmmdc (int a,int b)
{
    int r=0;
    while (b!=0)
    {
        r=a%b;
        a=b;
        b=r;
    }
    return a;
}
void f (int nrn)
{
    if (t[nrn].first==0)
        fout<<1;
    else
    {
        f (t[nrn].first);
        fout<<t[nrn].second;
    }
}
int main ()
{
    fin>>a>>b;
    x=a/cmmdc (a,b)*b;
    if (x==1)
    {
        fout<<1;
        return 0;
    }
    q.push (1);
    viz[1]=1;
    while (true)
    {
        nr=q.front ();
        q.pop ();
        for (i=0; i<=1; i++)
        {
            nrn=(nr*10+i)%x;
            if (viz[nrn]==0)
            {
                viz[nrn]=1;
                t[nrn]=make_pair (nr,i);
                if (nrn==0)
                {
                    ok=1;
                    break;
                }
                q.push (nrn);
            }
        }
        if (ok==1)
            break;
    }
    f (nrn);
    return 0;
}