Pagini recente » Cod sursa (job #869903) | Borderou de evaluare (job #1330214) | Cod sursa (job #2117610) | Cod sursa (job #728338) | Cod sursa (job #1021222)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
const int MAX_M = 2000002;
int A, B;
int Prev[MAX_M];
queue < int > Q;
vector < char > ans;
char c[MAX_M];
inline int gcd(int a, int b) {
int r;
while(b) {
r = a % b;
a = b;
b = r;
}
return a;
}
int main() {
ifstream f("multiplu.in");
ofstream g("multiplu.out");
f >> A >> B;
int M = (A*B)/gcd(A, B);
Q.push(1%M);
Prev[1%M] = 1;
c[1%M] = '1';
for( ; !Q.empty(); Q.pop()) {
int x = Q.front();
for(int i = 0; i <= 1; ++i) {
int y = (x*10 + i)%M;
if(c[y] == 0) {
Prev[y] = x;
c[y] = i + '0';
Q.push(y);
}
}
}
int x = 0;
while(x != 1) {
ans.push_back(c[x]);
x = Prev[x];
}
if(M != 1)
ans.push_back('1');
for(int i = ans.size() - 1; i >= 0; --i)
g << ans[i];
g << "\n";
f.close();
g.close();
return 0;
}