Cod sursa(job #116135)

Utilizator DorinOltean Dorin Dorin Data 17 decembrie 2007 20:59:50
Problema Multiplu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.6 kb
# include <stdio.h>

# define input "multiplu.in"
# define output "multiplu.out"

# define max 2000001

long long n,i,j,rez;
long long x,y,capat,st;
long long rest[max],ant[max],poza[max],rest2[max];

long long cmmmc(long long a,long long b)
{
    long long x,y,r;
    x = a;
    y = b;
    while(b)
    {
            r = a%b;
            a=b;
            b=r;
    }
    return (x*y)/a;
}
void afis(int i)
{
     if(i)
     {
                   afis(poza[i]);
                   printf("%d",ant[i]);
     }
}

int main()
{
    freopen(input,"r",stdin);
    freopen(output,"w",stdout);
    
    scanf("%lld%lld",&x,&y);
    n = cmmmc(x,y);
    
    x = n;

    ant[1] = 1;
    poza[1] = 0;
    rest[1] = 1;
    rest2[1] = 1;
    st = 1;   
    capat = 1;
    
    while(1)
    {
        int restp;
        restp = ( rest2[st] * 10 ) % n;
        if(!rest[restp])
        {
           if(!restp)
           {
               //
               afis(st);
               printf("0");
               return 0;
           }
           poza[++capat] = st;
           ant[capat] = 0;
           rest2[capat] = restp;
           rest[restp] = 1;
        }

        restp = ( rest2[st] * 10 + 1 ) % n;
        if(!rest[restp])
        {
           if(!restp)
           {
               //
               afis(st);
               printf("1");
               return 0;
           }
           poza[++capat] = st;
           ant[capat] = 0;
           rest2[capat] = restp;
           rest[restp] = 1;
        }

        st++;
    }
                
    return 0;
}