Q. Чётная чистота

Мы уже достаточно знатоки, чтобы очистить число от определённых цифр, поэтому давайте напишем программу, которая уберёт все чётные цифры из числа.

Формат ввода

Одно натуральное число.

Формат вывода:

Одно натуральное число — результат очистки.

Пример

Ввод

1234

Вывод

13

Ввод

123454321

Вывод

13531

Решение

Инициализируем переменную, хранящую разряд текущей позиции (power) цифры единицей и переменную, для накопления результата (result) нулем.
Раскладываем число на цифры в цикле с помощью остатка от деления на 10. Если цифра нечетная, то к результату прибавляем остаток от деления умноженный на power и увеличиваем power в 10 раз.
Делим число на 10, отбрасывая последнюю цифру.
Повторяем предыдущие шаги пока число больше нуля.

Есть и второй способ, не связанный с накоплением степени – сначала собрать число в обратном порядке, а после, с помощью цикла развернуть его.
В целом этот способ мало чем отличается от предыдлущего. Мы точно так же извлекаем последнюю цифру с помощью операции нахождения остатка от деления на 10. И точно так же уменьшаем число в 10 раз с помощью целочисленого деления. Но, если наш остаток нечетный, то мы накапливаем его в переменной, увеличивая в 10 раз каждый раз, когда встречаем нечетную цифру.
В результате у нас получается “перевернутый” ответ.
Развернуть его можно с помощью точно такого же приема, но в этот раз без проверки на четность.

Второе решение проще, но одновременно и коварнее – если бы нас попросили вывести четные цифры и тестовое число заканчивалось на ноль, это решение не смогло бы пройти тест.

Посмотреть код

Решение

Python
number = int(input())

result = 0
power = 1

while number > 0:
    if number % 2 != 0:
        result += (number % 10) * power
        power *= 10
    number //= 10

print(result)

Решение

Python
# не совсем правильное решение, которое проходит тесты

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)
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии