Cod sursa(job #799210)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 18 octombrie 2012 12:33:14
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
#include<queue>
#include<vector>
using namespace std;
int A,B,cmmmc;
int pred[2000100],cif[2000100];
bool viz[2000100];
queue <int> Q;
vector <int> sol;

int main()
{
	ifstream fin("multiplu.in");
	fin>>A>>B;
	fin.close();
	
	int i,r,x;
	cmmmc=A*B;
	while(B)
	{
		r=A%B;
		A=B;
		B=r;
	}
	cmmmc/=A;
	
	viz[1]=true;
	cif[1]=1;
	Q.push(1);
	while(!Q.empty() && !viz[0])
	{
		x=Q.front();
		Q.pop();
		r=(x*10)%cmmmc;
		if(!viz[r])
		{
			viz[r]=true;
			cif[r]=0;
			pred[r]=x;
			Q.push(r);
		}
		r=(x*10+1)%cmmmc;
		if(!viz[r])
		{
			viz[r]=true;
			cif[r]=1;
			pred[r]=x;
			Q.push(r);
		}
	}
	
	ofstream fout("multiplu.out");
	r=0;
	sol.push_back(cif[r]);
	r=pred[r];
	while(r)
	{
		sol.push_back(cif[r]);
		r=pred[r];
	}
	for(i=sol.size()-1;i>=0;i--)
		fout<<sol[i];
	fout<<"\n";
	fout.close();
	return 0;
}