Pagini recente » Cod sursa (job #3278836) | Borderou de evaluare (job #401022) | Cod sursa (job #678535) | Monitorul de evaluare | Cod sursa (job #2879988)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
queue<int> q;
int viz[2000005],previ[2000005];
bool ciur[100000];
int x;
void reconst(int y)
{
if(y==1)
{
fout<<1;
return;
}
reconst(previ[y]);
if((previ[y]*10)%x==y)
{
fout<<0;
}
else
{
fout<<1;
}
}
int main()
{
for(int i=2;i*i<=100000;i++)
{
if(ciur[i]==0)
{
for(int j=i*i;j<=100000;j+=i)
{
ciur[j]=1;
}
}
}
x=1;
int a,b,aux1,aux2,aux;
fin>>a>>b;
aux=b;
b=max(a,b);
if(b==a)
{
a=aux;
}
aux1=a;
aux2=b;
for(int i=2;i<=b;i++)
{
if(ciur[i]==0)
{
while(a%i==0 || b%i==0)
{
if(i<=a)a=a/i;
b=b/i;
x=x*i;
}
a=aux1;
b=aux2;
}
}
q.push(1);
viz[1]=1;
while(!q.empty())
{
int r=q.front();
///cout<<r<<' '<<previ[r]<<'\n';
if(r==0)
{
break;
}
q.pop();
int r0=(r*10)%x;
int r1=(r*10+1)%x;
if(viz[r0]==0)
{
viz[r0]=1;
previ[r0]=r;
q.push(r0);
}
if(viz[r1]==0)
{
viz[r1]=1;
previ[r1]=r;
q.push(r1);
}
}
reconst(0);
return 0;
}