Skip to content

Instantly share code, notes, and snippets.

@KolosovAO
Last active November 2, 2018 09:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KolosovAO/057af7e0d6e082595c4547deadf47965 to your computer and use it in GitHub Desktop.
Save KolosovAO/057af7e0d6e082595c4547deadf47965 to your computer and use it in GitHub Desktop.

Задача сводится к поиску всех делителей числа.
Если число имеет простой делитель больше 10, то задача не имеет решения.
Имеет смысл искать делители, начиная с 9. Это сократит количество чисел в записи числа.
9=3х3, 8=2х4, 6=2x3, 4=2x2.
Как только все делители были найдены, достаточно их просто перевернуть чтобы получить ответ.

function solve(num) {
    if (num < 10) {
        return num;
    }
    const digits = [];

    let current = 9;
    while(current > 1) {
        if (num % current === 0) {
            digits.push(current);
            num /= current;
        } else {
            current--;
        }
    }
    
    if (num > 9) {
        return -1;
    }

    return +digits.reverse().join("");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment