Задание 5

24 7 минут

Эта задача связана с анализом и построением алгоритмов для исполнителей. Задание 5 несложное, его можно решить вручную, но, конечно же, лучше использовать программирование в Python. Чтобы справиться с этим номером, тебе нужно знать Срезы и Функции bin(), oct(), hex(). 

Срез

Эта операция в Python позволяет получить часть списка или другого изменяемого последовательного типа данных. Срез создаёт новый объект, содержащий элементы исходного объекта с заданными индексами.

Функции

  • bin(num) — преобразует целое число в строку двоичного формата. Форматированная строка имеет префикс «0b».

Функция

  • oct(num) — преобразует целое число в строку восьмеричного формата с префиксом «0o».

Функция

  • hex(num) — преобразует целое число в строку шестнадцатеричного формата с префиксом «0x».

Функция

Тренируемся

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

Задача 1

Условие задачи

Начнем решать задание в программе:

  • строим двоичную запись числа N и обрезаем два первых символа

решение

  • далее дописываем бит четности к «s»: для этого нужно проверить, четное количество единиц или нет

решение

Кстати, ты можешь сократить решение и написать то же самое, но не в 8-ми строчках, а в 2-х (смысл не поменяется). Запись будет выглядеть так:

решение

  • теперь возвращаем десятичную запись нового числа

решение

  • важно: проверяем правильность работы алгоритма на основе условия задачи

решение

  • применяем алгоритм к разным числам, как только получим число больше 108, программа его отобразит и остановится

решение

Ответ: 114

Задача 2

условие

Предлагаем такой вариант решения в Python:

  • разбиваем число N на цифры с помощью генератора и сортируем список по возрастанию

решение

  • для удобства вычленим элементы и получим максимальную, среднюю и минимальную цифру из числа N

решение

  • строим алгоритм для вычисления разности между максимальным и минимальным числом

решение

Обрати внимание: мы не будем рассматривать вариант, когда в числе есть 0, потому что такого случая в нашем варианте задачи не будет (об этом говорит полученное из условия значение разности – 20).

 

  • узнаем количество чисел, которые дадут результат “20” на отрезке [300; 400]

решение

  • проверяем, есть ли в числе 0 (если есть, то его бессмысленно пропускать через алгоритм), и задаем условие. Рекомендуем посмотреть, какие именно число считает программа, чтобы убедится, что все верно (посмотри на команду в строке 15).

решение

Ответ: 12

Читайте также: