Cod sursa(job #243301)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 12 ianuarie 2009 17:15:19
Problema Multiplu Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include<stdio.h>
struct Q
       {
        char cif;
        long r;
        long pred;
       };
char frec[2000001],nrf[2000001];
Q v[2000001];
long a,b,ca,cb,r,r1,r2,c,p,u;
void solutie(long n)
{
long nr=0,i;
 nrf[++nr]=v[n].cif;
while(v[n].pred>0)
                  {

                   n=v[n].pred;
                    nrf[++nr]=v[n].cif;
                  }
for (i=nr;i>0;--i)
    printf("%d",nrf[i]);

}

int main()
{
freopen("multiplu.in","r",stdin);
freopen("multiplu.out","w",stdout);
scanf("%ld%ld",&a,&b);
ca=a;
cb=b;
while(ca!=0)
           {
            r=cb%ca;
            cb=ca;
            ca=r;
           }
c=a/cb*b;
frec[1]=1;
v[1].cif=1;
v[1].r=1;
v[1].pred=0;
p=u=1;
while(p<=u)
       {
        r1=(v[p].r*10+1)%c;
        if (frec[r1]==0)
           {
            frec[r1]++;
            v[++u].r=r1;
            v[u].cif=1;
            v[u].pred=p;
           }
        if (r1==0)
           {
            solutie(u);
            return 0;
           }
        r2=(v[p].r*10)%c;
        if (frec[r2]==0)
           {
            frec[r2]++;
            v[++u].r=r2;
            v[u].cif=0;
            v[u].pred=p;
           }
        if (r2==0)
           {
            solutie(u);
            return 0;
           }
        p++;
       }


return 0;
}