Cod sursa(job #2943852)

Utilizator adelina_15InfoAdelina Radoi adelina_15Info Data 21 noiembrie 2022 18:38:19
Problema Multiplu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

queue<int>q;

int pred[10000];

vector<bool>sol;

int cmmmc(int a, int b)
{
    int p = a*b;
    while(b > 0)
    {
        int r = a % b;
        a = b;
        b = r;
    }
    return p/a;
}

int main()
{
    int a, b;
    fin >> a >> b;
    int mc = cmmmc(a, b);
    q.push(1%mc);
    int rasp = 0;
    while(!q.empty())
    {
        int restAnt = q.front();
        q.pop();
        int r0 = (restAnt*10) % mc;
        int r1 = (restAnt*10+1) % mc;
        if(pred[r0] == 0)
            pred[r0] = restAnt;
        if(pred[r1] == 0)
            pred[r1] = restAnt;
        if(r0 == 0)
        {
            rasp = r0;
            break;
        }
        if(r1 == 0)
        {
            rasp = r1;
            break;
        }
        q.push(r0);
        q.push(r1);
    }
    while(pred[rasp] != 0)
    {
        int ant = pred[rasp];
        if((ant*10)%mc == rasp)
            sol.push_back(0);
        else
            sol.push_back(1);
        rasp = ant;
    }
    sol.push_back(1%mc);
    for(int i = sol.size()-1; i >= 0; i--)
        fout << sol[i];
    return 0;
}