Pagini recente » Cod sursa (job #286886) | Cod sursa (job #422450) | Cod sursa (job #946619) | Cod sursa (job #1719046) | Cod sursa (job #2785107)
#include <bits/stdc++.h>
#ifdef ONLINE_JUDGE
#define in std::cin
#define out std::cout
#else
std::ifstream in("multiplu.in");
std::ofstream out("multiplu.out");
#endif
template<typename T, size_t N>
constexpr size_t length_of(T (&)[N]) { return N; }
constexpr int N = 2e6;
int dp[N];
int prev[N];
std::bitset<N> digit;
void bfs(int mod) {
std::queue<int> q{{1}};
dp[1] = 1;
prev[1] = -1;
digit[1] = 1;
bool found = false;
while (!(q.empty() || found)) {
int u = q.front();
q.pop();
auto visit = [&](bool dig) {
int v = (u * 10 + dig) % mod;
if (dp[v] != 0 && dp[v] <= dp[u] + 1) return;
dp[v] = dp[u] + 1;
q.push(v);
prev[v] = u;
digit[v] = dig;
found = v == 0;
};
visit(0);
visit(1);
}
}
int main() {
int a, b;
in >> a >> b;
auto lcm = int(1ll * a * b / std::__gcd(a, b));
std::fill(prev, prev + length_of(prev), -1);
bfs(lcm);
std::vector<bool> number;
number.reserve(dp[0]);
for (int i = 0; i != -1; i = prev[i]) {
number.push_back(digit[i]);
}
for (auto it = number.rbegin(); it != number.rend(); ++it) {
out << *it;
}
out << '\n';
}