Cod sursa(job #545027)

Utilizator dariusmarianmarian darius dariusmarian Data 2 martie 2011 16:54:27
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
struct coada
{
char c;
int r,t;
};
coada q[2000001];
char viz[2000001];
int p,u;
void afisare()
{
char sol[2000001];
int i=0,j;
int poz=u;
while(poz!=0)
	{
	sol[++i]=q[poz].c;
	poz=q[poz].t;
	}
for(j=i;j>=1;j--)
	printf("%d",sol[j]);
}
int cmmdc(int a,int b)
{
int r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}

int main()
{
freopen("multiplu.in","r",stdin);
freopen("multiplu.out","w",stdout);
int a,b,m,CMMMC;
scanf("%d%d",&a,&b);
CMMMC=a*b/cmmdc(a,b);
int r;
p=u=1;
q[1].c=1;
q[1].r=1;
q[1].t=0;
viz[1]=1;
while(p<=u)
{
r=q[p].r*10%CMMMC;
if(viz[r]==0)
	{
	viz[r]=1;
	q[++u].c=0;
	q[u].r=r;
	q[u].t=p;
	}
if(r==0)
	{
	afisare();
	break;
	}
r=(q[p].r*10+1)%CMMMC;
if(viz[r]==0)
	{
	viz[r]=1;
	q[++u].c=1;
	q[u].r=r;
	q[u].t=p;
	}
	if(r==0)
		{
		afisare();
		break;
		}
++p;
}
return 0;
}