Cod sursa(job #1540264)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 2 decembrie 2015 15:54:20
Problema Multiplu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <cstdio>

using namespace std;

struct multiplu{
    bool c;
    int r,t;
};

int cmmmc(int a,int b){
    int ca,cb,r,cmmdc;
    ca=a;
    cb=b;
    while (b){
      r=a%b;
      a=b;
      b=r;
    }
    cmmdc=a;
    return ca*cb/cmmdc;
}

multiplu q[2000005];
bool viz[2000005];
char v[40];

int main(){
    freopen("multiplu.in","r",stdin);
    freopen("multiplu.out","w",stdout);
    int a,b,m,p,u,rest,x=0;
    scanf("%d%d",&a,&b);
    m=cmmmc(a,b);
    p=1;
    u=1;
    q[1].c=1;
    q[1].r=q[1].c%m;
    q[1].t=0;
    while (q[u].r>0){
        rest=(q[p].r*10)%m;
        if (viz[rest]==0){
            viz[rest]=1;
            u++;
            q[u].c=0;
            q[u].r=rest;
            q[u].t=p;
        }
        rest=(q[p].r*10+1)%m;
        if (viz[rest]==0){
            viz[rest]=1;
            u++;
            q[u].c=1;
            q[u].r=rest;
            q[u].t=p;

        }
        p++;
    }
    x=0;
    while (u>0){
        v[x++]=q[u].c;
        u=q[u].t;
    }
    x--;
    while (x>-1)
      printf("%d",v[x--]);
    return 0;
}