Вспомним о палиндромах, которые в обоих направлениях читаются одинаково. Напишите программу, которая проверяет, является ли число палиндромом.
Формат ввода
Одно натуральное число.
Формат вывода:
YES — если число является палиндромом, иначе — NO.
Пример
Ввод
1234
Вывод
NO
Ввод
123454321
Вывод
YES
Решение
Чтобы решить эту задачу, достаточно развернуть число, так, чтобы самые младшие разряды, стали самыми старшими. Для этого с помощью цикла можно разобрать число на отдельные цифры и собрать его в обратном порядке. Как раскладывать число на цифры мы знаем из задачи K. Цифровая сумма. Достаточно найти остаток от деления на 10, а само число поделить на 10 целочисленно. Чтобы собрать число в обратном порядке, достаточно полученый результат накапливать в переменной, умножая ее на 10 каждую итерацию цикла.
Во втором решении показано использование функции divmod(), которая позволяет выполнить в одно действие операцию целочисленного деления и поиск остатка от деления.
Посмотреть код
Решение
num = int(input())
original_num = num
reversed_num = 0
while num > 0:
digit = num % 10
reversed_num = reversed_num * 10 + digit
num //= 10
if original_num == reversed_num:
print('YES')
else:
print('NO')
Решение
num = int(input())
original_num = num
reversed_num = 0
while num > 0:
num, digit = divmod(num, 10)
reversed_num = reversed_num * 10 + digit
if original_num == reversed_num:
print('YES')
else:
print('NO')