Pagini recente » Cod sursa (job #1698096) | Cod sursa (job #348761) | Cod sursa (job #1323528) | Cod sursa (job #2896420) | Cod sursa (job #1828028)
#include <cstdio>
using namespace std;
const int NMAX=2000005;
int rez[NMAX];
bool exista[NMAX];
int cmmdc(int a,int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
struct my_queue
{
bool c;
int r,t;
};
my_queue q[NMAX];
bool viz[NMAX],sol[NMAX];
int main ()
{
freopen("multiplu.in","r",stdin);
freopen("multiplu.out","w",stdout);
int A,M,B,p,u,nrm=0,r,i;
scanf("%d%d",&A,&B);
M=A/cmmdc(A,B)*B;
p=u=1;
my_queue temp;
temp.c=1;
temp.r=1;
temp.t=0;
q[u]=temp;
viz[1]=1;
while(p<=u)
{
temp=q[p];
r=(temp.r*10)%M;
if(!viz[r])
{
viz[r]=1;
++u;
q[u].c=0;q[u].r=r;
q[u].t=p;
if(r==0)
break;
}
r=(temp.r*10+1)%M;
if(!viz[r])
{
viz[r]=1;
++u;
q[u].c=1;q[u].r=r;
q[u].t=p;
if(r==0)
break;
}
++p;
}
do
{
rez[++nrm]=q[u].c;
u=q[u].t;
}while(q[u].t);
rez[++nrm]=q[u].c;
u=q[u].t;
for(i=1;i<=nrm;++i)
printf("%d",rez[i]);
return 0;
}