Упражнение №5 — это задание базового уровня. Цель задания — оценить способности экзаменуемого в написании и изучении простых алгоритмов.
⏰ Время на выполнение — 4 минуты. Задание оценивается в 1 балл.
📥 Условие задачи →
❗ПЕРЕД ПРОЧТЕНИЕМ НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ОЗНАКОМИТЬСЯ С ПОДРОБНЫМ РЕШЕНИЕМ БАЗОВЫХ ТИПОВ ЗАДАНИЯ №5 ⤵
- I часть (Посимвольное двоичное преобразование)
- II часть (Посимвольное десятичное преобразование)
Если вы уже хорошо знакомы с этим материалом или уверенно разбираетесь в заданиях №5, то можете приступить к разбору сложной задачи ⤵
⚠ Необходимо составить план решения. Разбить условие задачи на несколько основных этапов →
Подробно разберем каждый из этапов решения ⤵
➀ Алгоритм получает на вход натуральное число N
Натуральные числа — это числа, которые используются для счета предметов или вещей.
- Как получить натуральные числа в Python?
— Использовать цикл for() + функцию range()
Цикл for() + range() позволяют получить все необходимые варианты натуральных чисел и выбрать подходящий.
📥 Для написания алгоритма вы можете использовать любую удобную среду (IDLE, PyCharm или Visual Studio). Для начинающих программистов рекомендую использовать именно IDLE.
В качестве примера можно взять небольшой диапазон значений в range →
Более детально с принципами работы цикла for() вы можете ознакомиться в данном материале ⤵
→ Запишем первую строчку кода в итоговое решение ⤵
📍Основная программа:
Переходим к следующему этапу →
➁ Строится троичная запись числа N
Троичная запись числа — это способ представления чисел, используя только две цифры: 0, 1, 2
- Как перевести число в троичную СС?
Чтобы преобразовать десятичное число в троичное, нужно делить его на 3 и записывать остатки от деления.
- CC — система счисления
- Как перевести число в ТРОИЧНУЮ СС c помощью Python?
📥 Принцип работы алгоритма аналогичен ручному методу: многократное деление числа на основание данной системы счисления и прибавление остатков ⤵
1. Объявить переменную, в которую последовательно записывать результат деления на 3
Для хранения результата лучше использовать переменную строкового типа (str). Поскольку каждый остаток от деления будет добавляться ("приклеиваться") к текущему значению переменной.
2. Использовать цикл while для многократного повторения операций деления
Цикл while будет выполняться до тех пор, пока исходное число будет больше нуля. Это необходимо для вычисления всех возможных остатков от деления на 3.
3. Остаток от деления вычислять с помощью встроенного оператора (%)
- % — остаток от деления в Python
4. Для деления переменной на 3 использовать встроенный оператор (//):
- // — целочисленное деление в Python
5. Использовать конкатенацию (склеивание) строк для записи остатков (+)
Остатки от деления на 3 будут поочерёдно добавляться к переменной из первого пункта. Поскольку она строкового типа, каждый остаток будет просто присоединяться к её концу.
❗Важно:
- Конкатенация работает только со строчным типом данных (str)
Алгоритм перевода в 3 CC на Python →
Более подробно с принципами перевода в различные СС вы можете ознакомиться в следующем материале ⤵
❗Важный момент:
В задаче требуется дважды выполнить перевод в 3 СС. Повторная реализация одного и того же алгоритма, занимающего 4 – 5 строк, нецелесообразна ❌ Это отнимает драгоценное время и требует дополнительных усилий.
- Какой выход❓
— Написать функцию (def) для перевода числа из 10 СС в 3 СС
❗Функция может быть запущена неограниченное количество раз, без дублирования кода.
Достаточно один раз написать алгоритм для перевода в 3 СС. Далее поместить этот алгоритм в функцию (def). И можно будет использовать эту функцию любое количество раз, не записывая код заново 😉
⏏ Создание функции в Python
Функция — это отдельный блок кода
- Функции помогают структурировать программу, делают её более понятной и удобной для работы.
Создание функции (three) для перевода чисел из 10 СС в 3 СС ⤵
step by step →
1. Создание функции:
В Python функция создаётся с помощью ключевого слова def (сокращение от define — определить)
2. Тело функции:
После двоеточия идёт тело функции. Это код, который будет выполняться, когда функция будет вызвана.
3. Вызов функции:
Чтобы выполнить код внутри функции, нужно её вызвать по имени:
Функция — это блок кода, который можно многократно использовать
📍Теперь необходимо добавить функцию для перевода в 3 СС в основную программу ⤵
🔒Проверка кода
На экран необходимо вывести значение переменных (n) и (а). Переменная (n) — десятичное число, поступающее на вход алгоритма. Переменная (а) — это число (n) после перевода в 3 СС ↓
☑ Алгоритм работает → Переходим к следующему этапу →
③ Далее эта запись обрабатывается по следующему правилу
"эта запись" — число, полученное на предыдущем этапе, то есть переменная (а). Переменная (а) — это натуральное число (n) в 3 СС.
а) если число N делится на 3
то к этой записи дописываются две последние троичные цифры
- Как сделать проверку на делимость в Python?
— Использовать условие (if) + оператор остаток от деления (%)
- Как работает конструкция else?
— Эта часть кода выполняется, если условие ложно. Когда не сработал оператор (if)
✔ Если условие истинно (True), то программа выполнит код, находящийся внутри блока if.
✖ Если условие не выполняется (False), код внутри блока if будет пропущен
- Как получить две последние троичные цифры?
— Использовать индексы в Python
☑ Индексы используются для доступа к элементам. Они позволяют получать или изменять отдельные элементы коллекции (строка или список) →
- [-1] — последний (крайний правый) символ в строке
- [-2] — предпоследний с права символ в строке
⛔ Нельзя использовать индексы для работы с целыми числами (типа int, float. Переменная должна быть строчного типа (str) или список (list).
→ Теперь попробуем объединить проверку на делимость и дописывание трёх последних цифр числа ⤵
Отлично! Программа работает ⚡
→ Теперь данный алгоритм необходимо добавить в основную программу:
✔ Проверка на делимость
✔ Дописывание последних двух цифр в конец числа
🔒Проверка кода
На экран необходимо вывести значение переменных (n, a) и результат работы алгоритма после дописывания двух последних цифр ⤵
☑ Алгоритм работает → Переходим к следующему этапу →
б) если число N на 3 не делится
то остаток от деления умножается на 3, переводится в троичную систему и дописывается в конец числа.
- Как определить, что число (N) не делится на 3?
— Использовать оператор (else) в блоке кода с условием (if - else)
- Как найти остаток от деления?
— Использовать встроенный оператор (%)
- Как перевести в троичную систему?
— С помощью уже созданной функции (three)
→ Теперь каждый шаг данного пункта необходимо добавить в основную программу:
- Создание ветки (else)
- Вычисление остатка от деления на 3 (ost) + Умножение остатка на 3 (ost * 3)
- Перевод в 3 СС остатка, умноженного на 3
- Запись в конец числа переменной (а) получившегося результата ⤵
🔒Проверка кода
Для проверки кода можно запустить программу на небольшом диапазоне (от 9 до 14) →
☑ Алгоритм работает → Переходим к следующему этапу →
④ Полученная таким образом запись
является троичной записью искомого числа R
- Что значит "полученная таким образом запись"?
— Результат работы алгоритма. В данной программе это значение переменной (а) после всех преобразований.
- Что значит "является троичной записью"?
— Значение переменной (а), после всех преобразований, переведенное в 10 СС
- Как перевести в 10 СС из 3 СС?
— Использовать встроенную функцию int() в Python
❗Важный момент ⤵
Необходимо ввести новую переменную (r) — десятичная запись числа (n)
⭐ ПРАВИЛО:
Для корректного перевода в 10 СС с помощью встроенной функции int(), число должно быть строчного типа (str)
Переходим к следующему этапу →
⑤ Например, для исходного числа 6
результатом является число 2020 = 60, а для исходного числа 4 = 11 результатом является число 1110 = 39
- Для чего в условии задачи записан данный пример?
— Данный пример служит для проверки работы алгоритма
Тестирование программы перед внесением последнего пункта решения поможет убедиться в правильности алгоритма: если результаты совпали — хороший показатель.
❗Иногда ответ может совпасть с указанным в условии, но сам алгоритм будет содержать ошибки 😳
Проверка кода с примерами из условия для (n = 6) и (n = 4) ↓
☑ Результат работы алгоритма совпал с результатом из условия задачи.
- range(6, 7) — данный промежуток отображает только одно число это 6
- range(4, 5) — данный промежуток отображает только одно число это 4
- print(n, a, r) — вывод значение переменных (n, a, r) на экран
Следующий этап →
⑥ Укажите максимальное число N
после обработки которого с помощью этого алгоритма получается число, не превышающее 150
- Что значит "после обработки которого"?
— Это число, которое будет получено после выполнения всех этапов алгоритма
- Как в Python выбрать число, подходящее под определенные условия?
— Использовать встроенную конструкцию (if)
- Как найти максимально возможное число N?
— Использовать список (list) + встроенная функция max()
Алгоритм нахождения максимального числа с помощью списка (list):
- Создать пустой список.
- Добавить все подходящие числа в список.
- Применить функцию (max), чтобы найти наибольший из элементов.
Списки [list] в Python
— используются для хранения и обработки элементов
- Списки создаются с помощью квадратных скобок [ ]
- Элементы внутри списка разделяются запятыми [1, 2, 3]
Пример кода для работы со списками (list) в Python ↓
- my = [ ] — создание пустого списка
- append() — добавление элемента в конец списка
Дополнительную информацию о списках (list) вы найдете в следующем материале ⤵
Пример кода для работы со списками (list) в Python + использование встроенной функции (max) ↓
Теперь необходимо добавить список в основное решение и реализовать алгоритм поиска максимального элемента →
🔥Итоговая программа
Решение Задание №5 ЕГЭ ⤵
Ответ: 16
👏 Поздравляю! Получен верный ответ и программа работает без ошибок
↻ Максимальное число (без использования списка)
Алгоритм нахождения наибольшего числа с помощью дополнительной пременной
Для решения задачи можно использовать другой метод для поиска максимального числа ⤵
- Ввести дополнительную переменную (max1) и присвоить ей значение 0
- Каждое подходящее значение (n) сравнивать с переменной (max1)
- Если текущее значение переменной (n) больше, чем значение (max1) - записать значение (n) в переменную (max1)
Решение Задание №5 ЕГЭ (без использования списков) ⤵
Отлично! Программа работает без ошибок.
😉 Good job! Keep it up! Good luck!
⬇Ещё материалы по теме Python: