Pagini recente » Calcule | Cod sursa (job #673256)
Cod sursa(job #673256)
#include<fstream>
#include<queue>
#include<vector>
using namespace std;
const int N=2000005;
queue<int> q;
int a,b,x,y,M,p[N],u[N];
ifstream in("multiplu.in");
ofstream out("multiplu.out");
void citire()
{
in>>a>>b;
for(int i=1;i<=N;++i)
u[i]=-1;
}
int cmmdc(int a,int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int cmmmc(int a,int b)
{
return a*b/cmmdc(a,b);
}
void rebuild(int y)
{
/*
if(y==1)
{
out<<y;
return ;
}
rebuild(p[y]);
*/
if(y!=1) rebuild(p[y]);
out<<u[y];
}
void bfs()
{
u[0]=-1;
if(M==1)
{
out<<'1\n';
return ;
}
p[1]=1;
u[1]=1;
q.push(1);
while(!q.empty())
{
x=q.front();
q.pop();
y=(x*10)%M;
if(u[y]==-1)
{
q.push(y);
u[y]=0;
p[y]=x;
}
if(y==0)
break;
y=(x*10+1)%M;
if(u[y]==-1)
{
q.push(y);
u[y]=1;
p[y]=x;
}
else
continue;
if(y==0)
break;
}
rebuild(0);
}
int main()
{
citire();
M=cmmmc(a,b);
bfs();
out<<'\n';
return 0;
}