Pagini recente » Cod sursa (job #1110474) | Cod sursa (job #2249407) | Cod sursa (job #1976143) | Cod sursa (job #2633105) | Cod sursa (job #2265691)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("multiplu.in");
ofstream fout ("multiplu.out");
const int NMAX= 1e6+5;
queue <int> q;
int A,B,nodPrec[NMAX],cur[NMAX];
bool last,b[NMAX];
long long M,mod1,mod2,nr;
long long cmmdc (long long a,long long b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
void afisare(int i)
{
//fout<<i<<endl;
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;
// fout<<mod1<<" "<<mod2<<endl;
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;
}
// fout<<"prec mod1= "<<nodPrec[mod1]<<"cur mod1= "<<cur[mod1]<<endl;
// fout<<"prec mod2= "<<nodPrec[mod2]<<"cur mod2= "<<cur[mod2]<<endl<<endl;
q.push(nr*10+0);
q.push(nr*10+1);
}
}
// fout<<endl;
//for(int i=1;i<=15;i++)
// fout<<nodPrec[i]<<" ";
//fout<<endl;
fout<<last;
return 0;
}