Cod sursa(job #2264140)

Utilizator TavinciStefanescu Octavian Tavinci Data 19 octombrie 2018 20:29:32
Problema Multiplu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
#define NMAX 2000002
using namespace std;

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

int cif[NMAX];
int pre[NMAX];
queue<int> Q;

void rezolv(int m)
{
	int p = 1;
	int u = 1;
	pre[1] = 1;
	cif[1] = 1;
	Q.push(1);
	while(p <= u)
	{
		int nod = Q.front();
        Q.pop();
		for(int i = 0; i <= 1; i++)
		{
			int x = (nod * 10 + i) % m;
			if(!pre[x])
			{
				cif[x] = i;
				pre[x] = nod;
                Q.push(x);
			}
			if(x == 0)
				return;
		}
	}
}



void afis(int g)
{
    if(g!=1)
        afis(pre[g]);
    fout<<cif[g];
}

int main()
{
    int a,b,m;
    fin>>a>>b;
    if( a * b == 1 )
    {
        fout << "1";
        return 0;
    }
    m = a / __gcd(a,b) * b;
    rezolv(m);
    afis(0);
    return 0;
}