Pagini recente » Cod sursa (job #3205909) | Cod sursa (job #59747) | Cod sursa (job #1318943) | Cod sursa (job #2235404) | Cod sursa (job #3163714)
#include <vector>
#include <queue>
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
const int LMAX = 2000005;
int a[LMAX][2], father[LMAX], cmmdc;
bool ap[LMAX], ultcif[LMAX];
void gasescnr() {
queue <int> Q;
Q.push(1);
while (!Q.empty() && !ap[0]) {
int node = Q.front();
Q.pop();
ap[node] = true;
if (!ap[node*10%cmmdc]) {
a[node][0] = node*10%cmmdc;
Q.push(node*10%cmmdc);
}
else {
a[node][0] = -1;
}
if (!ap[(node*10+1)%cmmdc]) {
a[node][1] = (node*10+1)%cmmdc;
Q.push((node*10+1)%cmmdc);
}
else {
a[node][1] = -1;
}
}
}
void bfs() {
queue <int> Q;
father[1] = -1;
ultcif[1] = 1;
Q.push(1);
bool ok;
while (!ok) {
int node = Q.front();
Q.pop();
for (int i = 0; i < 2; i++) {
if (a[node][i] != -1) {
ultcif[a[node][i]] = i;
father[a[node][i]] = node;
Q.push(a[node][i]);
if (a[node][i] == 0) {
ok = 1;
}
}
}
}
}
void afisnr(int node) {
if (father[node] != -1) {
afisnr(father[node]);
}
fout<<ultcif[node];
}
int main() {
int A, B, p, r;
fin>>A>>B;
p = A*B;
while (r) {
r = A%B;
A = B;
B = r;
}
cmmdc = p/A;
gasescnr();
bfs();
afisnr(0);
fin.close();
fout.close();
return 0;
}