Cod sursa(job #2783957)

Utilizator victor_gabrielVictor Tene victor_gabriel Data 15 octombrie 2021 13:32:59
Problema Multiplu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>

using namespace std;

ifstream fin("multiplu.in");
ofstream fout("multiplu.out");

bool v[2000005];
int aux[2000005], t[2000005];
int q[2000005], viz[2000005];

int cmmdc(int a, int b)
{
	while (b)
	{
		int r = a % b;
		a = b;
		b = r;
	}

	return a;
}

void reconst(int p)
{
	int k = 0;
	while (p > 0)
	{
		aux[++k] = v[p];
		p = t[p];
	}
	for (int i = k; i >= 1; i--)
		fout << aux[i];
}

int main()
{
	int a, b;
	fin >> a >> b;

	int x = a / cmmdc(a, b) * b;

	int p, u, nr1, nr2;
	p = u = 1;
	viz[1] = 1;
	q[p] = 1;
	v[p] = 1;
	while (p <= u)
	{
		nr1 = q[p];
		for (int i = 0; i <= 1; i++)
		{
			nr2 = (nr1 * 10 + i) % x;
			if (viz[nr2] == 0)
			{
				viz[nr2] = 1;
				q[++u] = nr2;
				t[u] = p;
				v[u] = i;
				if (nr2 == 0)
				{
					reconst(u);
					return 0;
				}
			}
		}
		p++;
	}

	return 0;
}