Мы уже достаточно знатоки, чтобы очистить число от определённых цифр, поэтому давайте напишем программу, которая уберёт все чётные цифры из числа.
Формат ввода
Одно натуральное число.
Формат вывода:
Одно натуральное число — результат очистки.
Пример
Ввод
1234
Вывод
13
Ввод
123454321
Вывод
13531
Решение
Инициализируем переменную, хранящую разряд текущей позиции (power) цифры единицей и переменную, для накопления результата (result) нулем.
Раскладываем число на цифры в цикле с помощью остатка от деления на 10. Если цифра нечетная, то к результату прибавляем остаток от деления умноженный на power и увеличиваем power в 10 раз.
Делим число на 10, отбрасывая последнюю цифру.
Повторяем предыдущие шаги пока число больше нуля.
Есть и второй способ, не связанный с накоплением степени – сначала собрать число в обратном порядке, а после, с помощью цикла развернуть его.
В целом этот способ мало чем отличается от предыдлущего. Мы точно так же извлекаем последнюю цифру с помощью операции нахождения остатка от деления на 10. И точно так же уменьшаем число в 10 раз с помощью целочисленого деления. Но, если наш остаток нечетный, то мы накапливаем его в переменной, увеличивая в 10 раз каждый раз, когда встречаем нечетную цифру.
В результате у нас получается “перевернутый” ответ.
Развернуть его можно с помощью точно такого же приема, но в этот раз без проверки на четность.
Второе решение проще, но одновременно и коварнее – если бы нас попросили вывести четные цифры и тестовое число заканчивалось на ноль, это решение не смогло бы пройти тест.
Посмотреть код
Решение
number = int(input())
result = 0
power = 1
while number > 0:
if number % 2 != 0:
result += (number % 10) * power
power *= 10
number //= 10
print(result)
Решение
# не совсем правильное решение, которое проходит тесты
num = int(input())
result = 0
while num > 0:
if num % 2:
result = result * 10 + num % 10
num //= 10
while result > 0:
num = num * 10 + result % 10
result //= 10
print(num)