Pagini recente » Cod sursa (job #2696475) | Cod sursa (job #724417) | Cod sursa (job #2296491) | Cod sursa (job #3200238) | Cod sursa (job #2329036)
#include <cstdio>
#include <bitset>
#include <queue>
using namespace std;
const int NMAX = 2000005;
queue<int>q;
bitset<NMAX> viz,cif;
int ant[NMAX];
int sol[NMAX];
inline int cmmdc(int a,int b)
{
int r;
while(b)
{
r = a % b;
a = b;
b = r;
}
return a;
}
inline int cmmmc(int a,int b)
{
return (int)1ll*(a*b)/cmmdc(a,b);
}
int main()
{
freopen("multiplu.in","r",stdin);
freopen("multiplu.out","w",stdout);
int a,b,k=0;
scanf("%d%d",&a,&b);
int p = cmmmc(a,b);
ant[1]=-1;
cif[1]=1;
viz[1]=1;
q.push(1);
while(!q.empty())
{
int temp = q.front();
q.pop();
for(int i = 0 ; i <= 1 ; i++)
{
int nr = (temp * 10 + i) % p;
if(!viz[nr])
{
cif[nr] = i;
viz[nr] = 1;
ant[nr] = temp;
q.push(nr);
}
if(viz[0])
{
int num=0;
while(num != -1)
{
sol[++k] = cif[num];
num = ant[num];
}
for(int j = k ; j >= 1 ; j--)
printf("%d",sol[j]);
return 0;
}
}
}
return 0;
}