Задание 5
Эта задача связана с анализом и построением алгоритмов для исполнителей. Задание 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