Pagini recente » Cod sursa (job #677231) | Cod sursa (job #820085) | Cod sursa (job #691700) | Cod sursa (job #483872) | Cod sursa (job #1126417)
#include <cstdio>
#define Vmax 2000005
using namespace std;
struct nr
{
int prec,c,r;
};
nr st[Vmax];
bool fr[Vmax];
int sol[Vmax];
inline int CMMC(int A, int B)
{
int r,ca=A,cb=B;
r=A%B;
while(r)
{
A=B; B=r; r=A%B;
}
return (ca*cb)/B;
}
inline void Afisare(int p)
{
int i;
for(;p;sol[++sol[0]]=st[p].c,p=st[p].prec);
for(i=sol[0];i;--i)
printf("%d", sol[i]);
printf("\n");
}
int main()
{
int A,B,top=1,i=1,rest;
freopen ("multiplu.in","r",stdin);
freopen ("multiplu.out","w",stdout);
scanf("%d%d", &A,&B);
A=CMMC(A,B);
st[1].prec=0; st[1].c=1; st[1].r=1;
fr[1]=true;
for(i=1;i<=top;++i)
{
rest=(st[i].r*10)%A;
if(rest==0)
{
sol[++sol[0]]=0;
Afisare(i);
break;
}
else
if(!fr[rest])
{
++top;
st[top].prec=i; st[top].c=0; st[top].r=rest;
fr[rest]=true;
}
rest=(st[i].r*10+1)%A;
if(rest==0)
{
sol[++sol[0]]=1;
Afisare(i);
break;
}
else
if(!fr[rest])
{
++top;
st[top].prec=i; st[top].c=1; st[top].r=rest;
fr[rest]=true;
}
}
return 0;
}