← Все вопросы

Как развернуть число задом наперёд, чтобы 1234 стало 4321, без превращения в строку?

Задан 6 месяцев назад1.2к просмотров2 ответа
5

Знаю, что строку можно перевернуть срезом, но в задаче просят именно работать с числом через деление и остаток, без строк. Как из 1234 получить число 4321? Понимаю, что % 10 даёт последнюю цифру, а дальше затык.

2 ответа

10
✓ Принятый ответ — помог автору

Идея: отрываешь по одной последней цифре через % 10, а к результату «пристраиваешь» её, умножая старый результат на 10.

n = 1234
result = 0
while n > 0:
    digit = n % 10      # последняя цифра
    result = result * 10 + digit
    n //= 10            # убрали последнюю цифру
print(result)   # 4321

На каждом шаге result сдвигается влево (*10) и добавляет очередную цифру. Это классический приём, его же используют, чтобы проверять числа на палиндром.

3

Осторожно с числами, оканчивающимися на ноль: 1200 перевернётся в 21, потому что ведущие нули в числе не хранятся. Если нужны именно символы с нулями — тогда без строки не обойтись.

Ваш ответ

Войдите, чтобы ответить на вопрос.