Cod sursa(job #2783951)

Utilizator biancalautaruBianca Lautaru biancalautaru Data 15 octombrie 2021 13:27:47
Problema Multiplu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
int a,b,x,i,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() {
    fin>>a>>b;
    x=a/cmmdc(a,b)*b;
    p=u=1;
    viz[1]=1;
    q[p]=1;
    v[p]=1;
    while (p<=u) {
        nr1=q[p];
        for (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;
}