Cod sursa(job #2714329)

Utilizator rapidu36Victor Manz rapidu36 Data 1 martie 2021 18:12:48
Problema Multiplu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<fstream>
#include<queue>
#include <iostream>

using namespace std;

int pred[101], ultim[101];

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

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

int cmmdc(int x, int y)
{
    while (y != 0)
    {
        int r = x % y;
        x = y;
        y = r;
    }
    return x;
}

int cmmmc(int x, int y)
{
    return x / cmmdc(x, y) * y;
}

void bfs(int m)
{
    queue<int> q;
    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,m;
    in>>a>>b;
    in.close();

    m = cmmmc(a, b);
    bfs(m);
    numar(0);
    out.close();
    return 0;
}