Ctrl K

Знаки между цифрами

Сложная
Дана строка digits из цифр и целое число goal. Между соседними цифрами можно поставить один из знаков +, -, * или не ставить ничего — тогда цифры склеиваются в многозначное число. Порядок цифр менять нельзя. Верните все получающиеся выражения, значение которых (с обычным приоритетом: умножение раньше сложения и вычитания) равно goal. Выражения возвращайте строками без пробелов, в любом порядке. Числа в выражении не могут начинаться с нуля: 0 можно, а 05 или 00 — нельзя.
Пример 1
digits="2024", goal=8 → ['2+0+2+4', '2-0+2+4', '2*0+2*4']

Восемь дают ровно три записи: 2+0+2+4, 2-0+2+4 и 2*0+2*4.

Пример 2
digits="105", goal=5 → ['1*0+5', '10-5']

1*0+5 = 5 и 10-5 = 5. Запись 1*05 не годится: число 05 начинается с нуля.

Пример 3
digits="99", goal=1 → []

Из 9 и 9 получаются только 99, 18, 0 и 81 — единицы среди них нет.

Ограничения
  • 1 ≤ len(digits) ≤ 10
  • digits состоит только из цифр
  • -2³¹ ≤ goal ≤ 2³¹ - 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБуквенный ребус на сложение СложнаяЧисло без нулей с кратным произведением цифр СложнаяВсе способы расставить пробелы СложнаяСлова в буквенной сетке СложнаяКалькулятор со скобками: плюс и минус Сложная
загружаем Python…
Вход
digits="2024", goal=8
Ожидается
['2+0+2+4', '2-0+2+4', '2*0+2*4']

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 69 тестов на сервере, включая скрытые.