Cod sursa(job #298508)

Utilizator thebest001Neagu Rares Florian thebest001 Data 6 aprilie 2009 10:28:34
Problema Multiplu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <stdio.h>
struct coada 
{
	char c;
    int r,p;
} c[2000005];
char ap[2000005],sol[2000005];
long a,b,m;
long cmmdc (long a,long b)
{
    long r;
    do
    {
        r=a%b;
        a=b;
        b=r;
    }
    while (r);
    return a;
}
int main ()
{
    freopen ("multiplu.in","r",stdin);
    freopen ("multiplu.out","w",stdout);
    scanf ("%d%d",&a,&b);
    m=a*b/euclid (a,b);
    int in=1,sf=1,i;
    for (c[in].c=c[in].r=1; in<=sf; ++in)
    {
        if (!ap[(c[in].r*10)%m])
        {
            ap[(c[in].r*10+0)%m]=1;
            c[++sf].c=0;
            c[sf].r=(c[in].r*10)%m;
            c[sf].p=in;
            if(!c[sf].r)
                break;
        }
        if (!ap[(c[in].r*10+1)%m])
        {
            ap[(c[in].r*10+1)%m]=1;
            c[++sf].c=1;
            c[sf].r=(c[in].r*10+1)%m;
            c[sf].p=in;
            if(!c[sf].r)
                break;
        }
    }
    while(sf)
    {
        sol[++sol[0]]=c[sf].c;
        sf=c[sf].p;
    }
    for (i=sol[0]; i; --i)
        printf ("%d",sol[i]);
}