Cod sursa(job #1655587)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 18 martie 2016 08:49:02
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.93 kb
# include <fstream>
# include <bitset>
# define DIM 2000000
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
int a,b,r,c1,d,nr,y,i,x,cmmmc,c[DIM],u,p,ok=1,t[DIM],cif[DIM],sol[DIM/10];
bitset <DIM> v;
int main () {
    fin>>a>>b;
    c1=a;
    d=b;
    while(b!=0){
        r=a%b;
        a=b;
        b=r;
    }
    cmmmc=(c1*d)/a;
    c[1]=1;
    cif[1]=1;
    t[1]=0;
    u=1;
    p=1;
    if(c[1]%cmmmc==0){
        fout<<1<<"\n";
        return 0;
    }

    while (p <= u) {
        for (x = 0; x <=1; x++) {
            r = (c[p] * 10 + x) % cmmmc;
            if (v[r] == 0) {
                v[r]=1;
                c[++u]=r;
                cif[u]=x;
                t[u]=p;
                if(c[u]==0){
                sol[++nr]=cif[u];
                y=t[u];
                while(y!=0){
                    sol[++nr]=cif[y];
                    y=t[y];
                }
                for(i=nr;i>=1;i--)
                    fout<<sol[i];
                fout<<"\n";
                return 0;
        }
            }
        }
        p++;

    }

   /* for(;;){
        c[++u]=c[p]*10;
        cif[u]=0;
        t[u]=p;
        c[u]%=cmmmc;
        if(c[u]==0){
            sol[++nr]=cif[u];
            y=t[u];
            while(y!=0){
                sol[++nr]=cif[y];
                y=t[y];
            }
            for(i=nr;i>=1;i--)
                fout<<sol[i];
            fout<<"\n";
            return 0;
        }
        c[++u]=c[p]*10+1;
        cif[u]=1;
        t[u]=p;
        c[u]%=cmmmc;
        if(c[u]==0){
            sol[++nr]=cif[u];
            y=t[u];
            while(y!=0){
                sol[++nr]=cif[y];
                y=t[y];
            }
            for(i=nr;i>=1;i--)
                fout<<sol[i];
            fout<<"\n";
            return 0;
        }
        p++;
    }
    */
    return 0;
}