Pagini recente » Cod sursa (job #366598) | Cod sursa (job #1492531) | Cod sursa (job #2033331) | Cod sursa (job #1039085) | Cod sursa (job #3204018)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
int a,b,d,viz[1001],rez[10001],ind,prv[10001],ant;
queue<int> q;
void reconstr()
{
int i=0;
while(prv[i])
{
if((prv[i] * 10)%d == i)
{
rez[++ind]=0;
}
else
{
rez[++ind]=1;
}
i= prv[i];
}
}
void bfs()
{
while(!q.empty())
{
int nod=q.front();
q.pop();
if(nod == 0) {reconstr(); break;}
else
{
if(!viz[nod*10%d])
{
prv[(nod*10)%d]=nod;
q.push(nod*10%d);
viz[nod*10%d]=1;
}
if(!viz[(nod*10+1)%d])
{
prv[(nod*10+1)%d]=nod;
q.push((nod*10+1)%d);
viz[(nod*10+1)%d]=1;
}
}
}
}
int cmmdc(int a, int b)
{
int r;
while(b)
{
r=a%b; a=b, b=r;
}
return a;
}
int main()
{
fin>>a>>b;
d=a*b/cmmdc(a,b); //CMMMC
q.push(1);
bfs();
//Trb sa scriu invers numerele
fout<<1;
for(int i=ind;i>=1;i--)
fout<<rez[i];
return 0;
}