Pagini recente » Cod sursa (job #2632526) | Cod sursa (job #132182) | Cod sursa (job #2657969) | Cod sursa (job #2934300) | Cod sursa (job #1459329)
#include<cstdio>
#include<algorithm>
using namespace std;
const int NMAX = 2000000;
struct QUEUE
{
bool c;
int r,pred;
};
int cmmmc(int a, int b)
{
int r,p;
p=a*b;
while(b)
{
r=a%b;
a=b;
b=r;
}
return p/a;
}
QUEUE q[NMAX];
bool f[NMAX];
bool sol[NMAX];
int main()
{
freopen("multiplu.in","r",stdin);
freopen("multiplu.out","w",stdout);
int m,a,b,k=0,p,u,r0,r1,i;
scanf("%d%d",&a,&b);
m=cmmmc(a,b);
if(a*b==1)
{
printf("1");
return 0;
}
p=u=1;
q[u].c=1;
q[u].r=1;
q[u].pred=0;
f[1]=1;
while(p<=u)
{
r0=(q[p].r*10)%m;
if(f[r0]==0)
{
++u;
f[r0]=1;
q[u].c=0;
q[u].r=r0;
q[u].pred=p;
}
if(r0==0)
{
break;
}
r1=(q[p].r*10+1)%m;
if(f[r1]==0)
{
++u;
f[r1]=1;
q[u].c=1;
q[u].r=r1;
q[u].pred=p;
}
if(r1==0)
{
break;
}
p++;
}
while(q[u].pred)
{
sol[++k]=q[u].c;
u=q[u].pred;
}
sol[++k]=q[1].c;
reverse(sol+1,sol+k+1);
for(i=1; i<=k; i++)
printf("%d",sol[i]);
return 0;
}