Чем отличается решение тестовых алгоритмических заданий на JS от nodeJS?

Тестовое задание в некоторых компаниях нельзя выполнить на JS, к выполнению доступен лишь nodeJS. Синтаксис фактически один и тот же, но отличается принятие вводных к задаче данных и их вывод. Хочу узнать, как в разных задачах принимаются данные и выводятся. немного знаю про readline, немного знаю про filesystem(при работе именно с файлами). На скриншоте неполная задача с ТЗ, как принимать в код переменные, и как вывести ответ?


Ограничение времени 3 секунды
Ограничение памяти 512 МБ

В самый что ни на есть обычный день Борис решил, что на протяжении следующих дней он будет покупать своей маме букет ровно из трех цветов. Там, где живет Борис, существует всего лишь один магазин цветов, но зато в нем широкий ассортимент: для каждого і от 0 до 10^100 в магазине есть ровно один уникальный цветок, стоящий 2^i бурлей. К тому же в магазин ежедневно довозят цветы, которые были выкуплены.

В і-й день у Бориса есть a(i) бурлей, которые он готов потратить на букет. Борис хочет купить как можно более дорогой букет. Для каждого из n дней определите, за какую стоимость Борис купит букет, или сообщите, что на его деньги невозможно купить никакой букет из трех цветов.


Формат входных данных:

Первая строка содержит число п (1 <= n <= 10^5) - количество дней, в течение которых Борис планирует покупать букеты.
i-я из следующих n строк содержит число а(i) (1 <= a(i) <= 10^18 - количество бурлей, которое есть у Бориса в i-й день.

Формат выходных данных:

Для каждого a(i) в отдельной строке выведите, сколько бурлей Борис потратит на букет в і-й день, или -1, если он не может купить никакой букет ровно из трех цветов.

Комментарий к примеру

  • в первый день Борис может купить цветы стоимостей 2^1, 2^2 и 2^3 во
  • второй день Борис может купить цветы стоимостей 2^0. 2^1 и 2^6 в
  • третий день Борис не может купить цветы таким образом, чтобы составить букет из трех цветов и уложиться в сумму в 5 бурлей.

Примеры данных
Ввод

3
15
67
5

Вывод

14
15
-1

Вот та же задача, но скрином, на всякий случай


Ответы (1 шт):

Автор решения: ksa

Поскольку тут файлы не особо почитаешь... Предложу хотя бы алгоритм решения.

const n = 10 ** 100
const a = [15, 67, 5]
a.forEach(s => console.log(test(s)))

//
function test(s){
    let m = -1
    for (let x = 0; x < n; x++) {
        const vx = 2 ** x
        if (vx > s) break
        for (let y = 0; y < n; y++) {
            if (y == x) break
            const vy = 2 ** y
            if (vx + vy > s) break
            for (let z = 0; z < n; z++) {
                if (z == x) break
                if (z == y) break
                const v = vx + vy + 2 ** z
                if (v > s) break
                // console.log(`2^${x} + 2^${y} + 2^${z} = ${v}`, ' | ', 2**x, 2**y, 2**z)
                if (m < v) m = v
            }
        }
    }
    return m
}

→ Ссылка