Pagini recente » Cod sursa (job #2830778) | Cod sursa (job #1582615) | Cod sursa (job #2904059) | Cod sursa (job #434939) | Cod sursa (job #1344506)
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cstring>
#include <vector>
#include <bitset>
#define INF 0x3f3f3f3f
#define Nmax 2000001
using namespace std;
int N,M,D;
int cmmdc(int a,int b){
if(b)
return cmmdc(b, a%b);
return a;
}
int DP[Nmax];
pair<int,int> daddy[Nmax];
queue<int> Q;
void Read()
{
scanf("%d%d",&N,&M);
D = N*M / cmmdc(N,M);
}
vector<int> ans;
void print(int k)
{
int x = DP[0],r = 0;
for(int i = 1; i < DP[0]; ++i)
{
ans.push_back(daddy[r].second);
r = daddy[r].first;
}
ans.push_back(1);
for(int i = (int)ans.size()-1; i >= 0; --i)
printf("%d",ans[i]);
exit(0);
}
void Solve(long long k)
{
Q.push(k%D);
memset(DP,INF,sizeof(DP));
DP[k%D] = 1;
int r,_r;
while(!Q.empty())
{
r = Q.front();
Q.pop();
if(r == 0)
print(0);
_r = (r * 10)%D;
if(DP[_r] > DP[r] + 1)
{
DP[_r] = DP[r] + 1;
daddy[_r] = make_pair(r,0);
Q.push(_r);
}
_r = (_r + 1)%D;
if(DP[_r] > DP[r] + 1)
{
DP[_r] = DP[r] + 1;
daddy[_r] = make_pair(r,1);
Q.push(_r);
}
}
}
int main()
{
freopen("multiplu.in","r",stdin);
freopen("multiplu.out","w",stdout);
Read();
Solve(1);
return 0;
}