Pagini recente » Cod sursa (job #2091502) | Cod sursa (job #1459524) | Cod sursa (job #1035371) | Cod sursa (job #770130) | Cod sursa (job #2265675)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fi("multiplu.in");
ofstream fo("multiplu.out");
const int MAX=2e6+5;
int a,b,lcm,viz[MAX],pre[MAX],cif[MAX];
queue <int> Q;
vector <int> sol;
int gcd(int a,int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
void afis()
{
int rest=0;
while(rest!=-1)
{
sol.push_back(cif[rest]);
rest=pre[rest];
}
for(int i=sol.size()-1;i>=0;i--)
fo<<sol[i];
}
int main()
{
fi>>a>>b;
lcm=a*b/gcd(a,b);
Q.push(1);
viz[1]=1;
pre[1]=-1;
cif[1]=1;
while(!viz[0])
{
int rest=Q.front();
Q.pop();
if(!viz[(rest*10)%lcm])
{
Q.push((rest*10)%lcm);
viz[(rest*10)%lcm]=1;
pre[(rest*10)%lcm]=rest;
cif[(rest*10)%lcm]=0;
}
if(!viz[(rest*10+1)%lcm])
{
Q.push((rest*10+1)%lcm);
viz[(rest*10+1)%lcm]=1;
pre[(rest*10+1)%lcm]=rest;
cif[(rest*10+1)%lcm]=1;
}
}
afis();
fi.close();
fo.close();
return 0;
}