Cod sursa(job #2269839)

Utilizator sandupetrascoPetrasco Sandu sandupetrasco Data 26 octombrie 2018 17:28:18
Problema Multiplu Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

int n, m;
queue < int > Q;
unordered_map < int , string > M;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    
    ifstream cin("multiplu.in");
    ofstream cout("multiplu.out");
    cin >> n >> m;
    
    int nr = (n * m) / __gcd(n, m);
    
    if (nr == 1) return cout << 1, 0;
    
    Q.push(1);
    M[1] = "1";
    
    while (Q.size()){
        int node = Q.front(); Q.pop();
        
        if (node == 0) return cout << M[node], 0;
        for (int i = 0; i < 2; i++){
            int next = node * 10 + i;
            int modd = next % nr;
            
            if (M[modd].size()) continue;
            Q.push(modd);
            M[modd] = M[node];
            M[modd] += (i + '0');
        }
    }
    
    return 0;
}