Cod sursa(job #2119635)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 1 februarie 2018 14:48:34
Problema Multiplu Scor 30
Compilator cpp Status done
Runda Simulare 44 Marime 0.8 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int nmax = 1 << 25;
int r[nmax + 1];
vector< int > v;

int gcd (int a, int b) {
    while (b > 0) {
        int r = a % b;
        a = b;
        b = r;
    }
    return a;
}

int main () {
    int a, b;
    fin >> a >> b;

    int lcm = a * b / gcd(a, b);

    for (int i = 1; i < nmax; ++ i) {
        r[ i ] = r[i >> 1] * 10 + (i & 1);
        r[ i ] %= lcm;

        if (r[ i ] == 0) {
            while (i > 0) {
                v.push_back(i & 1);
                i >>= 1;
            }

            for (int j = (int)v.size() - 1; j >= 0; -- j)
                fout << v[ j ];
            return 0;
        }
    }
    fout << "-1\n";

    fin.close();
    fout.close();
    return 0;
}