Pagini recente » Cod sursa (job #3245958) | Cod sursa (job #2720661) | Cod sursa (job #1778896) | Cod sursa (job #1246658) | Cod sursa (job #3247688)
#include <bits/stdc++.h>
#define VMAX 50000
#define NMAX 20000010
#define LOG 19
#define INF (long long)(1e9)
#define MOD 123457
#define ll long long int
#define ADD 1e9
#define NIL 0
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
queue<pair<int,int>> Q;
int p[NMAX+1],cif[NMAX+1];
bool inQ[NMAX+1];
int a,b;
int gcd(int x,int y)
{
while(y)
{
int r = x%y;
x=y;
y=r;
}
return x;
}
int main()
{
fin >> a >> b;
int m = a*b/gcd(a,b);
int k=1;
inQ[1]=1;
cif[1]=1;
p[1]=0;
Q.push({1,1});
int res=0;
while(!Q.empty() && !res)
{
int r = Q.front().first;
int x = Q.front().second;
inQ[r]=0;
Q.pop();
if(r==0)
{
res=x;
}
else
{
if(!inQ[r*10%m])
{
++k;
Q.push({r*10%m,k});
cif[k]=0;
p[k]=x;
inQ[r*10%m]=1;
}
if(!inQ[(r*10+1)%m])
{
++k;
Q.push({(r*10+1)%m,k});
cif[k]=1;
p[k]=x;
inQ[(r*10+1)%m]=1;
}
}
}
vector<int> num;
while(res)
{
num.push_back(cif[res]);
res = p[res];
}
reverse(num.begin(),num.end());
for(int i : num)
{
fout << i;
}
}