Pagini recente » Cod sursa (job #2864572) | Cod sursa (job #2889038) | Cod sursa (job #2868328) | Cod sursa (job #1626501) | Cod sursa (job #2299206)
#include <bits/stdc++.h>
#define DIM 2000005
using namespace std;
ifstream fin ("multiplu.in");
ofstream fout ("multiplu.out");
int cif[DIM], ant[DIM], q[DIM];
bool v[DIM];
string sol;
int main(){
int a, b, m, ok = 0, i, p, u;
fin >> a >> b;
if (a*b == 1){
fout << 1;
return 0;
}
m = a/__gcd(a,b)*b; /// m = cmmmc (a, b)
v[1] = 1; /// viz
cif[1] = 1; /// tip
ant[1] = -1; /// anterior
q[1] = 1; /// in q am cele mai mici numere formate cu 0 si 1 care dau un anumit rest la impartirea cu m (introduc, de fapt, resturile lor la m - in numar de maxim m-1)
p = u = 1;
while (p <= u){
int k = q[p];
for (i=0; i<=1; i++){
int p = (10*k + i)%m;
if (v[p]){
continue;
}
v[p] = 1;
ant[p] = k;
cif[p] = i;
q[++u] = p;
if (p == 0){
break;
}
}
p++;
}
while(ok != -1) {
sol.push_back (cif[ok] + '0');
ok = ant[ok];
}
reverse(sol.begin(), sol.end());
fout << sol;
return 0;
}