Pagini recente » Cod sursa (job #1318723) | Cod sursa (job #479409) | Cod sursa (job #114188) | Cod sursa (job #2749777) | Cod sursa (job #2627691)
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
ifstream cin("multiplu.in");
ofstream cout("multiplu.out");
int a,b,m,t,viz[2000005],ans,pred[2000005],v[2000005],ultim[2000005];
queue <int> q;
int main()
{
cin>>a>>b;
m=a/__gcd(a,b)*b;
if(m==0){
cout<<0;
return 0;
}
if(m==1){
cout<<1;
return 0;
}
else{
viz[1%m]=1;
}
q.push(1);
pred[1%m]=-1;
while(!q.empty()){
t=q.front();
q.pop();
if(viz[(t*10)%m]==0){
viz[(t*10)%m]=1;
pred[t*10%m]=t;
ultim[t*10%m]=0;
if((t*10)%m==0){
ans=t*10%m;
break;
}
else{
q.push((t*10)%m);
}
}
if(viz[(t*10+1)%m]==0){
viz[(t*10+1)%m]=1;
pred[(t*10+1)%m]=t;
ultim[(t*10+1)%m]=1;
if((t*10+1)%m==0){
ans=(t*10+1)%m;
break;
}
else{
q.push((t*10+1)%m);
}
}
}
int k=0;
while(pred[ans]!=-1){
v[++k]=ultim[ans];
ans=pred[ans];
}
cout<<1;
for(int i=k;i>0;i--){
cout<<v[i];
}
return 0;
}