Pagini recente » Cod sursa (job #1890141) | Cod sursa (job #1261056) | Cod sursa (job #984124) | Cod sursa (job #2634204) | Cod sursa (job #1699142)
#include <cstdio>
using namespace std;
const int NMAX=2000000;
struct multiplu
{
int c,r,t;
};
multiplu q[NMAX+5];
bool viz[NMAX+5],sol[NMAX+5];
int main()
{
freopen("multiplu.in","r",stdin);
freopen("multiplu.out","w",stdout);
int a,b,ca,cb,p,u,r,d,ta,k,i;
scanf("%d%d",&a,&b);
ca=a;
cb=b;
while(b)
{
r=a%b;
a=b;
b=r;
}
d=ca*cb/a;
a=ca;
b=cb;
q[1].c=1;
q[1].r=1%d;
q[1].t=0;
q[0].r=1;
p=u=1;
while(p<=u)
{
if(viz[(q[p].r*10+0)%d]==0)
{
u++;
q[u].c=0;
q[u].r=(q[p].r*10+0)%d;
q[u].t=p;
viz[q[u].r]=1;
if(q[u].r==0)
break;
}
if(viz[(q[p].r*10+1)%d]==0)
{
u++;
q[u].c=1;
q[u].r=(q[p].r*10+1)%d;
q[u].t=p;
viz[q[u].r]=1;
if(q[u].r==0)
break;
}
p++;
}
ta=q[u].t;k=1;
sol[1]=q[u].c;
while(ta!=0)
{
sol[++k]=q[ta].c;
ta=q[ta].t;
}
for(i=k; i>=1; i--)
printf("%d",sol[i]);
return 0;
}