Pagini recente » Cod sursa (job #3292522) | Cod sursa (job #1000516) | Cod sursa (job #2540500) | Borderou de evaluare (job #2360983) | Cod sursa (job #3186523)
#include <fstream>
#include <queue>
using namespace std;
ofstream fout("multiplu.out");
const int Nmax = 2000005;
int A, B, n;
queue<int> Q;
int prv[Nmax];
bool visited[Nmax];
int CMMDC(int a, int b) {
int r = a % b;
while(r) {
a = b;
b = r;
r = a % b;
}
return b;
}
void reconst(int rest) {
if(rest == 1) {
fout << 1;
return;
}
reconst(prv[rest]);
if((prv[rest] * 10) % n == rest) {
fout << 0;
}
else {
fout << 1;
}
}
int main() {
ifstream fin("multiplu.in");
fin >> A >> B;
n = A * B / CMMDC(A, B);
if(n == 1) {
fout << "1\n";
return 0;
}
Q.push(1);
visited[1] = true;
while(!Q.empty()) {
int rest = Q.front();
Q.pop();
int next_rest = (rest * 10) % n;
if(!visited[next_rest]) {
Q.push(next_rest);
visited[next_rest] = true;
prv[next_rest] = rest;
}
if(next_rest == 0) {
break;
}
next_rest = (rest * 10 + 1) % n;
if(!visited[next_rest]) {
Q.push(next_rest);
visited[next_rest] = true;
prv[next_rest] = rest;
}
if(next_rest == 0) {
break;
}
}
reconst(0);
return 0;
}