Ctrl K

Цепочка сумм в строке цифр

Средняя
Дана строка digits, состоящая только из цифр. Нужно понять, можно ли разрезать её на последовательность чисел (не меняя порядок цифр и используя каждую цифру ровно один раз) так, чтобы: - чисел было не меньше трёх; - каждое число, начиная с третьего, равнялось сумме двух чисел перед ним. Число не может начинаться с нуля, если только это не сам 0: куски 05 или 00 недопустимы, а 0 — можно. Верните True, если такое разрезание существует, и False иначе. Числа в цепочке могут быть очень длинными — подумайте, как бы вы справились без длинной арифметики в языке.
Пример 1
digits='2810182846' → True

Разрезаем так: 2, 8, 10, 18, 28, 46. Начиная с третьего, каждое число — сумма двух предыдущих: 2 + 8 = 10, 8 + 10 = 18, 10 + 18 = 28, 18 + 28 = 46.

Пример 2
digits='1012' → False

Подошло бы 1, 01, 2, но у числа «01» ведущий ноль, а это запрещено. Других разрезаний, где работает правило суммы, нет.

Пример 3
digits='5050100' → True

50 + 50 = 100 — цепочка из трёх чисел, этого достаточно.

Ограничения
  • 1 ≤ len(digits) ≤ 100
  • digits состоит только из цифр 0–9
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСлова с кнопочного телефона СредняяВсе правильные скобочные строки СредняяСлово на сетке букв СредняяIP-адреса из цепочки цифр СредняяНарезка слова на палиндромы Средняя
загружаем Python…
Вход
digits='2810182846'
Ожидается
True

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