Cod sursa(job #148516)

Utilizator sory1806Sandu Sorina-Gabriela sory1806 Data 4 martie 2008 14:08:07
Problema Multiplu Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream.h>
#define max 2000
int mod[max], bk[max], a, b, m;
int nx[max];
ifstream f("multiplu.in");
ofstream g("multiplu.out");

int cmmdc(int a, int b);
void solve();
void write(int n);

int main()
{       f>>a>>b;
	m=cmmdc(a, b);
	m=a/m*b;
	solve();
	return 0;
}

int cmmdc(int a, int b)
{       if(a==0)
		return b;
	if(b==0)
		return a;
	if(a>b)
		return cmmdc(a%b, b);
	else
		return cmmdc(a, b%a);
}

void solve()
{	int p, u, i, md;
	p=0; u=0;
	mod[0]=1; bk[1]=-1; nx[1]=1;
	while(p<=u)
	{       for(i=0; i<=1; i++)
		{	md=(mod[p]*10+i)%m;
			if(bk[md]==0)
			{       u++;
				mod[u]=md;
				bk[md]=mod[p];
				nx[md]=i;
				if(bk[0]!=0)
				{       write(0);
					g<<'\n';
					g.close();
					return;
				}
			}
		}
		p++;
	}
}

void write(int n)
{	if(bk[n]>0)
		write(bk[n]);
	g<<nx[n];
}