Cod sursa(job #2262084)

Utilizator CammieCamelia Lazar Cammie Data 16 octombrie 2018 22:42:11
Problema Multiplu Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>

using namespace std;

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

long long multiplu;
int x[9];

inline int cmmdc(int a, int b) {
    int r;
    do {
        r = a % b;
        a = b;
        b = r;
    } while (r);

    return a;
}

inline int nrcif(int nr) {
    int contor = 0;
    while (nr) {
        contor++;
        nr /= 10;
    }

    return contor;
}

inline int test(int n) {
    long long nr = 0;
    for (int i = 1; i <= n; i++) {
        nr *= 10;
        nr += x[i];
    }

    if (nr % multiplu  == 0) {
        fout << nr;
        return 1;
    }
    return 0;
}

inline void bkt(int n) {
    int k = 1; x[1] = 0;
    while (k) {
        if (x[k] < 1) {
            x[k]++;

            if (k == n) {
                if (test(n)) {
                    return;
                }
            }
            else if (k < n) {
                k++;
                x[k] = -1;
            }
        }
        else
            k--;
    }
    bkt(n + 1);
}

inline void Read() {
    int A, B, div, cont;

    fin >> A >> B;
    div = cmmdc(A, B);
    multiplu = (1LL * A * B) / div;
    cont = nrcif(multiplu);

    bkt(cont);
}

int main () {
    Read();

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