Cod sursa(job #2714311)

Utilizator tubac_vladTubac Vlad-Cristian tubac_vlad Data 1 martie 2021 17:55:02
Problema Multiplu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>

#include <queue>

using namespace std;

queue <int> q;

const int N = 2000001;
int m, pred[N], ultim[N] ;

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

void afisare(int x)
{
    if( x == -1 )
    {
        return ;
    }
    afisare(pred[x]);
    out << ultim[x] ;
}

void bfs()
{
    q.push(1) ;
    pred[1] = -1 ;
    ultim[1] = 1 ;
    while(!q.empty())
    {
        int x = q.front() ;
        q.pop() ;
        for(int i=0 ; i < 2 ; i++ )
        {
            int y = (x * 10 + i) % m;
            if (pred[y] == 0)
            {
                ultim[y] = i ;
                pred[y] = x ;
                if(y == 0)
                {
                    return ;
                }
                q.push(y) ;
            }
        }
    }
}

int main()
{
    int a,b ;
    in >> a >> b ;
    int p = a * b ;
    while(a != b)
    {
        if(a > b)
        {
            a -= b;
        }
        else
        {
            b -= a;
        }
    }
    m = p / a ;
    bfs();
    afisare(0);

    return 0;
}