Cod sursa(job #1414871)

Utilizator patrickdanDan patrick patrickdan Data 3 aprilie 2015 10:36:28
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <cstdio>
#include<vector>
#include<algorithm>
using namespace std;
struct multiplu
{
  bool c;
  int r,t;
};
multiplu q[2000001];
bool fr[2000001];
bool sol[2000001];
int main()
{
    freopen("multiplu.in","r",stdin);
    freopen("multiplu.out","w",stdout);
    int a,b,ca,cb,r,cmmmc,u,p,r0,r1,m,nr,cu,i;
    scanf("%d%d",&a,&b);
    ca=a;
    cb=b;
    while(cb)
    {
      r=ca%cb;
      ca=cb;
      cb=r;
    }
    m=a*b/ca;
    i=1;
    p=u=1;
    q[p].c=1;q[p].r=1;fr[1]=1;
    while(p<=u)
    {
     r0=(q[p].r*10+0)%m;
     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)%m;
     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++;
    }
    nr=1;
    cu=u;
    sol[nr]=q[cu].c;
    while(q[cu].t!=0)
    {
      cu=q[cu].t;
      sol[++nr]=q[cu].c;
    }
    for(i=nr;i>=1;i--)
      printf("%d",sol[i]);
    return 0;
}