Cod sursa(job #117138)

Utilizator a7893Nae Mihai a7893 Data 20 decembrie 2007 20:10:35
Problema Multiplu Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<stdio.h>
#define N 2000000
int a,b,m,c[N],use0[N],use1[N];
int cmmmc(int x,int y)
{
	int r,cx,cy;
	cx=x;
	cy=y;
	while(y)
	{
		r=x%y;
		x=y;
		y=r;
	}
	return cx*cy/x;
}
int gasit_0(int x,int sf)
{
	int i;
	for(i=1;i<=sf;++i)
		if(c[i]%m==(x*10)%m)
			return 0;
	return 1;
}
int gasit_1(int x,int sf)
{
	int i;
	for(i=1;i<=sf;++i)
		if(c[i]%m==(x*10+1)%m)
			return 0;
	return 1;
}
void solve()
{
	int ic,sf;
	m=cmmmc(a,b);
	c[1]=1;
	ic=sf=1;
	while(ic<=sf)
	{
		/*if(gasit_0(c[ic],sf))
			c[++sf]=c[ic]*10+0;
		if(gasit_1(c[ic],sf))
			c[++sf]=c[ic]*10+1;
		*/
		if(!use0[(c[ic]*10)%m])
		{
			c[++sf]=c[ic]*10+0;
			use0[(c[ic]*10)%m]=1;
		}
		if(!use1[(c[ic]*10+1)%m])
		{
			c[++sf]=c[ic]*10+1;
			use1[(c[ic]*10+1)%m]=1;
		}
		if(c[ic]%m==0)
		{
			printf("%d\n",c[ic]);
			return;
		}
		ic++;
	}
}
int main()
{
	freopen("multiplu.in","r",stdin);
	freopen("multiplu.out","w",stdout);
	scanf("%d%d",&a,&b);
	solve();
	return 0;
}