Pagini recente » Cod sursa (job #1613288) | Cod sursa (job #3343317) | Cod sursa (job #2812853) | Cod sursa (job #1505598) | Cod sursa (job #251832)
Cod sursa(job #251832)
#include <stdio.h>
#define Nmax 2000100
char x[Nmax], sol[Nmax];
int t[Nmax], q[Nmax], v[Nmax], SOL;
int cmmdc(int x,int y)
{
if (y==0) return x;
return cmmdc(y,x%y);
}
int cmmmc(int x,int y)
{
return (x/cmmdc(x,y))*y;
}
int main()
{
freopen("multiplu.in","r",stdin);
freopen("multiplu.out","w",stdout);
int a,b;
scanf("%d%d", &a, &b);
int m = cmmmc(a,b);
int st=0, dr=1;
q[1] = 1;
x[1] = 1;
v[1] = 1;
t[1] = -1;
while (st<dr)
{
int rest = q[++st], tmp;
if (rest == 0) SOL = st;
if (rest == 0) break;
tmp = (rest*10)%m;
if (v[tmp] == 0)
{
v[tmp] = v[rest] + 1;
q[++dr] = tmp;
t[dr] = st;
}
tmp = (tmp+1)%m;
if (v[tmp] == 0)
{
v[tmp] = v[rest] + 1;
q[++dr] = tmp;
t[dr] = st;
x[dr] = 1;
}
}
int tmp = SOL;
for (int i=v[q[SOL]];i>0;--i)
{
sol[i] = x[tmp];
tmp = t[tmp];
}
for (int i=1;i<=v[q[SOL]];++i)
printf("%c", sol[i]+48);
printf("\n");
return 0;
}