Pagini recente » Cod sursa (job #60524) | Cod sursa (job #37582) | Cod sursa (job #3289596) | Cod sursa (job #2442148) | Cod sursa (job #1436000)
#include <iostream>
#include <vector>
#include <set>
#include <queue>
#include <algorithm>
#include <string>
#include <fstream>
#include <cctype>
#include <iomanip>
#include <cmath>
#include <cstring>
#include <map>
#include <bitset>
#include <stack>
/* //c++11
#include <unordered_map>
#include <unordered_set>
#include <tuple>
*/
using namespace std;
ifstream fin("multiplu.in");
ofstream fout("multiplu.out");
int cmmdc(int a, int b)
{
if(b == 0)
return a;
return cmmdc(b,a%b);
}
int t[2000001];
int nrc[2000001];
bitset<2000001> c;
queue<int> Q;
void fa(int r, int x, int cif)
{
if(!(nrc[x] + 1 < nrc[r] || nrc[r] == 0))
return;
nrc[r] = nrc[x] + 1;
t[r] = x;
c[r] = cif;
Q.push(r);
}
void afis(int x)
{
if(x != 1)
afis(t[x]);
fout<<c[x];
}
int main()
{
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
int a, b;
fin>>a>>b;
int div = a*b/cmmdc(a,b);
Q.push(1);
c[1] = 1;
nrc[1] = 1;
bool found = false;
while(!Q.empty() && !found)
{
int x = Q.front();
if(x == 0)
{
afis(x);
found = true;
continue;
}
Q.pop();
int rest1 = (x*10)%div;
int rest2 = (x*10+1)%div;
fa(rest1, x, 0);
fa(rest2, x, 1);
}
return 0;
}
//FILE!!!