Cod sursa(job #3149528)

Utilizator amunnumeVlad Patrascu amunnume Data 9 septembrie 2023 17:09:48
Problema Multiplu Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>
#define N 2000005
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
int a,b,r,m,n,i,j,x,t[N],s[N];
bool f[N],c[N];
queue<int> q;
int main()
{
    fin>>a>>b;
    m=a*b;
    while(b)
    {
        r=a%b;
        a=b;
        b=r;
    }
    m/=a;
    f[1]=1;
    t[1]=0;
    c[1]=1;
    i=1; j=1;
    q.push(1);
    while(!q.empty())
    {
        x=q.front();
        q.pop();
        n=(x*10+1)%m;
        if(!f[n])
        {
            ++j;
            f[n]=1;
            t[j]=i;
            c[j]=1;
            q.push(n);
        }
        if(!n) break;
        n=(x*10+0)%m;
        if(!f[n])
        {
            ++j;
            f[n]=1;
            t[j]=i;
            c[j]=0;
            q.push(n);
        }
        if(!n) break;
        ++i;
    }
    x=0;
    while(1)
    {
        s[++x]=c[j];
        j=t[j];
        if(!j) break;
    }
    for(i=x;i>=1;--i)
    {
        fout<<s[i];
    }
    return 0;
}