Модификация классической задачи на проверку счастливости билета. Условие:
Так как проверка на счасливость очень быстрая, то в этой задаче введено ещё условие, что во входных данных несколько тестов. Считаем их количество:
Все тесты можно обработать независимо друг от друга, поэтому просто запустим цикл. Для начала считаем номер билета, который получил Вова, и приведём к числовому типу:
К числу мы приводим, так как проверять на счастливость нам надо будет не этот номер, а больший или меньший на 1. Для этого нам понадобятся операции прибавления и вычитания.
Предположим, что у нас уже написана функция f(a), которая проверяет счастливость числа a. Тогда для вывода ответа, нам надо лишь запустить её дважды:
Если хотя бы один из запусков функции вернёт True, то выводим Yes (внимательно с регистром букв), иначе - No.
А теперь перейдём к самому интересному - функции f. С числом проделаем следующие операции:
- преобразуем его в строку
- возьмём подстроку из трёх последних символов
- каждый символ подстроки преобразуем в число
- сложим полученные числа
И такое же проделаем с подстрокой без трёх последних символов. Выглядит объёмно, но, к счастью, на Python всё это можно записать в одну строку:
Здесь очень важно делить на части условием "три последних" и "все, кроме трёх последних", а не "три первых" и "все, начиная с четвёртого". Так как во входной строке могут быть ведущие нули, и при преобразовании к числу, а потом снова к строке, строка получится короче. Например "012201" -> 12201 -> "12201". Если у итоговой строки взять первые три и все остальные, то ответ No. А правильный - Yes.
Предыдущий выпуск: Задача 263. Метро
Я очень хочу, чтобы мои советы были полезны вам, а для того, чтобы быстрее всех получать новые статьи можно подписаться на мой канал.