Pagini recente » Cod sursa (job #336358) | Cod sursa (job #2918251) | Cod sursa (job #1850863) | Cod sursa (job #2670683) | Cod sursa (job #2265703)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("multiplu.in");
ofstream fout ("multiplu.out");
const int NMAX= 3e6+5;
queue <int> q;
int A,B,nodPrec[NMAX],cur[NMAX];
bool last,b[NMAX];
int M,mod1,mod2,nr;
int cmmdc (int a,int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
void afisare(int i)
{
if(i==-1)
{
fout<<1;
return;
}
afisare(nodPrec[i]);
fout<<cur[i];
}
int main()
{
fin>>A>>B;
M=(A*B)/cmmdc(A,B);
nodPrec[0]=-1;
cur[0]=1;
q.push(1);
if(A*B==1)
fout<<1;
else
{
while(!q.empty() )
{
nr=q.front();
mod1=(nr*10+0)%M;
mod2=(nr*10+1)%M;
q.pop();
if(mod1==0)
{
last=0;
afisare(nr%M);
break;
}
if(mod2==0)
{
last=1;
afisare(nr%M);
break;
}
if(!b[mod1])
{
b[mod1]=true;
cur[mod1]=0;
if(nr==1)
nodPrec[mod1]=-1;
else
nodPrec[mod1]=nr%M;
}
if(!b[mod2])
{
b[mod2]=true;
cur[mod2]=1;
if(nr==1)
nodPrec[mod2]=-1;
else
nodPrec[mod2]=nr%M;
}
q.push(nr*10+0);
q.push(nr*10+1);
}
}
return 0;
}