Cod sursa(job #2269834)

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

using namespace std;

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

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