Pagini recente » Cod sursa (job #2676178) | Cod sursa (job #2331847) | Cod sursa (job #1314651) | Cod sursa (job #418802) | Cod sursa (job #2815816)
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
const int maxN = 2000001;
int n1, n2, mp, f[maxN], p[maxN];
int euclid(int a, int b)
{
if(a == 0 || b == 0)
return a + b;
if(a < b)
return euclid(a, b % a);
return euclid(a % b, b);
}
void solve()
{
queue <int> q;
p[1] = -1;
f[1] = 1;
q.push(1);
while(!q.empty())
{
int curr = q.front(), vecin;
q.pop();
for(int i = 0; i < 2; i++)
{
vecin = (curr * 10 + i) % mp;
if(p[vecin] == 0)
{
p[vecin] = curr;
f[vecin] = i;
if(vecin == 0)
return;
q.push(vecin);
}
}
}
}
void afis(int x)
{
if(x == -1)
return;
afis(p[x]);
fout << f[x];
}
int main()
{
fin >> n1 >> n2;
mp = n1 * n2 / euclid(n1, n2);
solve();
afis(0);
return 0;
}