Cod sursa(job #343380)

Utilizator rumburakrumburak rumburak Data 25 august 2009 18:27:21
Problema Multiplu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<cstdio>

const int M = (1<<21);

int a,b,m,pred[M];
short int ult[M];

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

void CL()
{
	int p=1,u=0,x,y,i,q[M];
	pred[1]=1;
	ult[1]=1;
	q[++u]=1;
	while(p<=u)
	{
		x=q[p++];
		for(i=0 ; i<2 ; ++i)
		{
			y=(x*10+i)%m;
			if(!pred[y])
			{
				ult[y]=i;
				pred[y]=x;
				q[++u]=y;
			}
		}
	}
}

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

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