Pagini recente » Cod sursa (job #1233042) | Cod sursa (job #1446254) | Cod sursa (job #1414444) | Cod sursa (job #1257318) | Cod sursa (job #243294)
Cod sursa(job #243294)
#include<stdio.h>
struct queue
{
char cif;
long r;
long pred;
};
long C,nr;
char f[2000001];// 2000001
char v[2000001];// 2000001
queue q[2000301];
void read()
{
freopen("multiplu.in","r",stdin);
freopen("multiplu.out","w",stdout);
long ca,cb,a,b,r;
scanf("%ld%ld",&a,&b);
ca=a;
cb=b;
while(a)
{
r=b%a;
b=a;
a=r;
}
C=ca*cb/b;
}
void sol(long n)
{
v[++nr]=q[n].cif;
if(q[n].pred!=0)
sol(q[n].pred);
}
void rez()
{
long u,p,r1,r2;
q[1].cif=1;
q[1].r=1;
q[1].pred=0;
f[1]=1;
u=p=1;
while(p<=u)
{
// adaugam 1
r1=(q[p].r*10+1)%C;
if(f[r1]==0)
{
f[r1]=1;
q[++u].r=r1;
q[u].cif=1;
q[u].pred=p;
}
if(r1==0)
{
sol(u);
break;
}
// adaugam 0
r2=q[p].r*10%C;
if(f[r2]==0)
{
f[r2]=1;
q[++u].r=r2;
q[u].cif=0;
q[u].pred=p;
}
if(r2==0)
{
sol(u);
break;
}
p++;
}
}
void afisare()
{
long i;
for(i=nr;i>=1;i--)
printf("%d",v[i]);
}
int main()
{
read();
rez();
afisare();
return 0;
}