Cod sursa(job #354085)

Utilizator APOCALYPTODragos APOCALYPTO Data 6 octombrie 2009 23:37:50
Problema Multiplu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<cstdio>

const int M = (1<<22);

int a,b,m,up[M],q[M],*r=new int[M];
short int cif[M];

int cmmdc(int a,int b)
{
	int r;
	while(b)
	{
		r=a%b;
		a=b;
		b=r;
	}
	return a;
}

void CL()
{
	int k=1,dimq=0,x,y,i;
	up[1]=1;
	cif[1]=1;
	q[++dimq]=1;
	r[1]=1;
	while(p<=dimq)
	{
		x=q[k++];

			y=(x*10+1)%m;
			if(!r[y])
			{
				cif[y]=1;
				up[y]=x;
				q[++dimq]=y;
				r[y]=y;
			}
			if(y==0)
				return;

            y=(x*10)%m;
			if(!r[y])
			{
				cif[y]=0;
				up[y]=x;
				q[++dimq]=y;
				r[y]=y;
			}
			if(y==0)
			  return;


	}
}

void drum(int x)
{
	if(x!=1)
		drum(up[x]);
	printf("%hd",cif[x]);
}

int main()
{
	freopen("multiplu.in","r",stdin);
	freopen("multiplu.out","w",stdout);
	scanf("%d%d",&a,&b);
	m=a*b/cmmdc(a,b);
	CL();
	drum(0);
	return 0;
}