Cod sursa(job #1414866)

Utilizator tiberiu225Iancu Tiberiu tiberiu225 Data 3 aprilie 2015 10:32:55
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <algorithm>
#include <vector>
#include <cstdio>
using namespace std;
struct MULTIPLU
{
    bool c;
    int r,t;
};
MULTIPLU q[2000005];
bool fr[2000005];
int sol[2000005];
int main()
{
    freopen("multiplu.in","r",stdin);
    freopen("multiplu.out","w",stdout);
    int a,b,rest,ca,cb,cmmmc;
    scanf("%d%d",&a,&b);
    ca=a;
    cb=b;
    while(cb)
    {
        rest=ca%cb;
        ca=cb;
        cb=rest;
    }
    cmmmc=a*b/ca;
    int i=2,p,u,r1;
    p=u=1;
    q[1].r=1;
    q[1].c=1;
    q[1].t=0;
    fr[1]=1;
    int r0;
    while(p<=u)
    {
        r0=(q[p].r*10+0)%cmmmc;
        if(fr[r0]==0)
        {
            ++u;
            q[u].c=0;
            q[u].r=r0;
            q[u].t=p;
            fr[r0]=1;
        }
        if(r0==0)
            break;
        r1=(q[p].r*10+1)%cmmmc;
        if(fr[r1]==0)
        {
            ++u;
            q[u].c=1;
            q[u].r=r1;
            q[u].t=p;
            fr[r1]=1;
        }
        if(r1==0)
            break;
        p++;
    }
    int num=0;
    while(u>0)
    {
        sol[++num]=q[u].c;
        u=q[u].t;
    }
    for(i=num; i>=1; --i)
        printf("%d",sol[i]);
    return 0;
}