Cod sursa(job #877018)

Utilizator Kira96Denis Mita Kira96 Data 12 februarie 2013 14:48:42
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
#define DIM 2000010
using namespace std;
ifstream f("multiplu.in");
ofstream g("multiplu.out");
int i,m,b,p,t,re,u,a,bb;
bool viz[DIM],c[DIM],sol[DIM];
int r[DIM],v[DIM];
void write()
{
	while(u)
	{
		sol[++t]=c[u];
		u=v[u];
	}
	for(i=t;i>=1;--i)
	{
		g<<sol[i];
	}
}
int main ()
{
	f>>m>>b;
	a=m; bb=b;
	while(b!=0)
	{
		re=m%b;
		m=b;
		b=re;
	}
	m=a*bb/m;
	c[1]=1;
	r[1]=1%m;
	if(r[1]==0)
	{
		g<<"1";
		return 0;
	}
	v[1]=0;
	p=u=1;
	while(p<=u)
	{
		for(i=0;i<2;++i)
		{
			if(!viz[(r[p]*10+i)%m])
			{
				r[++u]=(r[p]*10+i)%m;
				c[u]=i;
				viz[r[u]]=1;
				v[u]=p;
			if(r[u]==0)
			{
				write();
				return 0;
			}
			}
		}
		++p;
	}
	return 0;
}