function tenToBin(x) { const l = []; while (x !== 0) { l.push(x % 2); x = Math.trunc(x / 2); } return l; } function calculateSum(numbers, mask) { let x = 0; for (let i = 0; i < mask.length; i++) { if (mask[i] == 1) { x = x + numbers[i]; } } return x } function findSum(target, numbers) { const totalCombinations = Math.pow(2, numbers.length) - 1; for (let index = 0; index < totalCombinations; index++) { const mask = tenToBin(index); const currentSum = calculateSum(numbers, mask); if (currentSum == target) { console.log(mask); return mask; } } return []; } function main() { const args = process.argv.slice(2); // 1. Валидация if (args.length < 5) { console.log("ER: input parameters"); process.exit(1); } if (args.length > 30) { console.log("ER: input parameters"); process.exit(1); } // 2. Формирование данных const target = parseInt(args[0], 10); const numbers = args.slice(1).map(Number); // 3. Запуск поиска const result = findSum(target, numbers); if (result.length) { console.log("OK: ", result.join('')); } else { console.log("NO: not found.") } } main();