Pagini recente » Clasament dupa rating | Cod sursa (job #1683956) | Diferente pentru runda/redsnow_2 intre reviziile 30 si 29 | Cod sursa (job #945949) | Cod sursa (job #2146784)
#include <fstream>
#include <queue>
using namespace std;
ifstream cin ("multiplu.in");
ofstream cout ("multiplu.out");
const int MAX_N = 2000001;
int a, b, c;
int r, top;
int m;
int last[MAX_N], lastr[MAX_N];
int v[MAX_N];
queue <int> Q;
int main() {
cin >> a >> b;
c = a;
a *= b;
while(b > 0) {
r = c % b;
c = b;
b = r;
}
a /= c;
Q.push(1);
last[1] = 1;
while(!Q.empty()) {
top = Q.front();
Q.pop();
if(lastr[top * 10 % a] == 0) {
Q.push(top * 10 % a);
last[top * 10 % a] = 0;
lastr[top * 10 % a] = top;
if(top * 10 % a == 0)
break;
}
if(lastr[(top * 10 + 1) % a] == 0) {
Q.push((top * 10 + 1) % a);
last[(top * 10 + 1) % a] = 1;
lastr[(top * 10 + 1) % a] = top;
if((top * 10 + 1) % a == 0)
break;
}
}
v[++m] = last[0];
top = lastr[0];
while(top) {
v[++m] = last[top];
top = lastr[top];
}
for(int i = m; i >= 1; i--)
cout << v[i];
return 0;
}