Pagini recente » Cod sursa (job #2485047) | Cod sursa (job #622671) | Cod sursa (job #732093) | Cod sursa (job #1004505) | Cod sursa (job #1459321)
#include <cstdio>
using namespace std;
const int NMAX=2000000;
struct queue
{
bool c;
int r;
int pred;
};
queue q[NMAX];
bool f[NMAX];
bool sol[NMAX+1];
int cmmdc(int a,int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int main()
{
freopen("multiplu.in","r",stdin);
freopen("multiplu.out","w",stdout);
int a,b,m,p,u,r1,r2,i,j;
scanf("%d%d",&a,&b);
if(a*b==1)
{
printf("1");
return 0;
}
m=a*b/cmmdc(a,b);
p=u=1;
q[1].c=1;
q[1].pred=0;
q[1].r=1;
f[1]=1;
while(p<=u)
{
r1=(q[p].r*10)%m;
if(f[r1]==0)
{
f[r1]=1;
++u;
q[u].r=r1;
q[u].c=0;
q[u].pred=p;
if(r1==0)
break;
}
r2=(q[p].r*10+1)%m;
if(f[r2]==0)
{
f[r2]=1;
++u;
q[u].r=r2;
q[u].c=1;
q[u].pred=p;
if(r2==0)
break;
}
++p;
}//while
i=0;
do
{
++i;
sol[i]=q[u].c;
u=q[u].pred;
}while(u!=0);
for(j=i;j>=1;--j)
printf("%d",sol[j]);
return 0;
}