Cod sursa(job #943174)

Utilizator usermeBogdan Cretu userme Data 24 aprilie 2013 16:36:23
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>

struct tipspecial{
    long c,r,t;
};

tipspecial aux,q[2000010];
bool fals[2000010];
int rez[2000010];

int a,b,c,u,p,CM,i,n;

int euclid (int a,int b){
    int r,Aa=a,Bb=b;
    while(Bb)
    {
        r=Aa%Bb;
        Aa=Bb;
        Bb=r;
    }
    return Aa;
}
int main () {

    FILE*f=fopen("multiplu.in","r");
    FILE*h=fopen("multiplu.out","w");
    fscanf(f,"%d%d",&a,&b);
    int CM=(a*b)/euclid(a,b);
    p=u=1;
    aux.c=1;
    aux.r=(aux.c)%CM;
    aux.t=0;
    q[p]=aux;
    while(p<=u)
    {
        if(q[p].r==0)
            break;
        for(c=0;c<2;c++)
        {
            aux.c=c;
            aux.r=(q[p].r*10+c)%CM;
            aux.t=p;
            if(!fals[aux.r])
            {
                fals[aux.r]=1;
                q[++u]=aux;
            }

        }
        p++;
    }
    c=0;
    while(p)
    {
        rez[++c]=q[p].c;
        p=q[p].t;
    }
    for(i=c;i>=1;i--)
        fprintf(h,"%d",rez[i]);
    fprintf(h,"\n");
    return 0;
}