Cod sursa(job #396456)

Utilizator FlorianFlorian Marcu Florian Data 15 februarie 2010 13:47:55
Problema Multiplu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
using namespace std;
ifstream in("multiplu.in"); 
ofstream out("multiplu.out");
const int MAX_N=2000002;
int pre[MAX_N], Q[MAX_N],P,U;
char u[MAX_N], viz[MAX_N];
int A, B, M;
inline void print(int p)
{
	if(pre[p]) print(pre[p]);
	out<<u[p];
}
int main()
{
	
	in>>A>>B;
	int rest, nrest, i, ok = 0;
	P = 1, U = 0;
	Q[++U] = 1; viz[1] = 1; u[1] = '1';
	rest = A%B;
	M = A * B;
	while(rest) { A = B; B = rest; rest = A%B; }
	M = M / B;
	while( !ok )
	{
		rest = Q[P];
		for(i = 0; i < 2; ++i) // trist, dar doar doua valori vreau.
		{
			nrest = ( rest * 10 + i) % M;
			if( viz[nrest] != 1 && !ok )
			{
				Q[++U] = nrest; u[U] = i + '0';
				pre[U] = P;
				viz[nrest] = 1;
				if(nrest == 0) ok = 1;
			}
		}
		++P;
	}
	print(U);
	return 0;
}