Cod sursa(job #3140235)

Utilizator Vasilescu_CosminVasilescu Cosmin Vasilescu_Cosmin Data 4 iulie 2023 20:51:33
Problema Multiplu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;

const int MAXPROD = 2e6;

queue<int> q;
vector<int> visited(MAXPROD, -1);

void reconstruct(int a, int m){
    if(a == 1){
        cout << 1;
        return;
    }

    reconstruct(visited[a], m);

    if((visited[a] * 10) % m == a){
        cout << 0;
    } else {
        cout << 1;
    }
}

int main()
{
    freopen("multiplu.in", "r", stdin);
    freopen("multiplu.out", "w", stdout);

    int a, b, m;

    cin >> a >> b;
    m = a / __gcd(a, b) * b;

    q.push(1);
    visited[1] = 1;
    while(!q.empty() && q.front()){
        int varf = q.front();
        q.pop();

        if(visited[(varf * 10) % m] == -1){
            visited[(varf * 10) % m] = varf;
            q.push((varf * 10) % m);
        }
        if(visited[(varf * 10 + 1) % m] == -1){
            visited[(varf * 10 + 1) % m] = varf;
            q.push((varf * 10 + 1) % m);
        }
    }
    reconstruct(0, m);
    return 0;
}