Pagini recente » Cod sursa (job #2936106) | Cod sursa (job #2493389) | Cod sursa (job #2335661) | Cod sursa (job #1484758) | Cod sursa (job #2943874)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
queue<int>q;
int pred[2000005];
bool viz[2000005];
vector<bool>sol;
int cmmmc(int a, int b)
{
int p = a*b;
while(b > 0)
{
int r = a % b;
a = b;
b = r;
}
return p/a;
}
void Reconstituire(int x, int mc)
{
if(x == 1)
{
fout << 1;
return;
}
int ant = pred[x];
Reconstituire(ant, mc);
if((ant*10) % mc == x)
fout << 0;
else
fout << 1;
}
int main()
{
int a, b;
fin >> a >> b;
int mc = cmmmc(a, b);
if(mc == 1)
{
fout << 1;
return 0;
}
q.push(1%mc);
int rasp = 0;
while(!q.empty())
{
int restAnt = q.front();
q.pop();
int r0 = (restAnt*10) % mc;
int r1 = (restAnt*10+1) % mc;
if(viz[r0] == 0)
{
pred[r0] = restAnt;
viz[r0] = 1;
q.push(r0);
}
if(viz[r1] == 0)
{
pred[r1] = restAnt;
viz[r1] = 1;
q.push(r1);
}
if(r0 == 0)
break;
if(r1 == 0)
break;
}
Reconstituire(0, mc);
return 0;
}