Cod sursa(job #2783952)

Utilizator gabriel.9619Gabriel Stefan Tita gabriel.9619 Data 15 octombrie 2021 13:29:12
Problema Multiplu Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
int a, b, p, u, nr1, nr2, q[2000005], t[2000005], viz[2000005], aux[2000005];
bool v[2000005];
int cmmdc(int x, int y)
{
    while(y!=0)
    {
        int r=x%y;
        x=y;
        y=r;
    }
    return x;
}

void reconst(int p)
{
    int k=0;
    while(p>0)
    {
        aux[++k]=v[p];
        p=t[p];
    }
    for(int i=k;i>=1;i--)
    {
        fout<<aux[i];
    }
}

int main()
{
    int a, b, a1, b1, x;
    fin>>a>>b;
    x=a/cmmdc(a, b)*b;
    p=u=1;
    viz[1]=1;
    q[p]=1;
    v[p]=1;
    t[p]=0;
    while(p<=u)
    {
        nr1=q[p];
        for(int i=0;i<=1;i++)
        {
            nr2=(nr1*10+i)%x;
            if(viz[nr2]==0)
            {
                viz[nr2]=1;
                q[++u]=nr2;
                t[u]=p;
                v[u]=i;
                if(nr2==0)
                {
                    reconst(u);
                    return 0;
                }
            }
        }
        p++;
    }
    return 0;
}