Найти в Дзене
МОЙ РЕПЕТИТОР

Сложное задание №5 ЕГЭ Информатика: Успешная стратегия

Оглавление

Упражнение №5 — это задание базового уровня. Цель задания — оценить способности экзаменуемого в написании и изучении простых алгоритмов.

⏰ Время на выполнение — 4 минуты. Задание оценивается в 1 балл.

❗ПЕРЕД ПРОЧТЕНИЕМ НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ОЗНАКОМИТЬСЯ С ПОДРОБНЫМ РЕШЕНИЕМ БАЗОВЫХ ТИПОВ ЗАДАНИЯ №5 ⤵

  • I часть (Посимвольное двоичное преобразование)
  • II часть (Посимвольное десятичное преобразование)

Если вы уже хорошо знакомы с этим материалом или уверенно разбираетесь в заданиях №5, то можете приступить к разбору сложной задачи ⤵

-2

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

Условие задачи ЕГЭ по Информатике задание №5.
Условие задачи ЕГЭ по Информатике задание №5.

Необходимо составить план решения. Разбить условие задачи на несколько основных этапов →

-4

Подробно разберем каждый из этапов решения ⤵

➀ Алгоритм получает на вход натуральное число N

Натуральные числа — это числа, которые используются для счета предметов или вещей.

  • Как получить натуральные числа в Python?

Использовать цикл for() + функцию range()

Цикл for() + range() позволяют получить все необходимые варианты натуральных чисел и выбрать подходящий.

📥 Для написания алгоритма вы можете использовать любую удобную среду (IDLE, PyCharm или Visual Studio). Для начинающих программистов рекомендую использовать именно IDLE.

В качестве примера можно взять небольшой диапазон значений в range →

Пример работы циклом for() в Python. Диапазон от 1 до 6 (не включительно).
Пример работы циклом for() в Python. Диапазон от 1 до 6 (не включительно).

Более детально с принципами работы цикла for() вы можете ознакомиться в данном материале

Полный гайд по циклу FOR в Python
МОЙ РЕПЕТИТОР20 сентября 2024

→ Запишем первую строчку кода в итоговое решение ⤵

📍Основная программа:

Начало программы для решения задания ЕГЭ №5 по информатике.
Начало программы для решения задания ЕГЭ №5 по информатике.

Переходим к следующему этапу →

Строится двоичная запись числа N

Двоичная запись числа — это способ представления чисел, используя только две цифры: 0 и 1

Как перевести в 2 СС Python?

— Использовать встроенную функцию bin()

📥Как работает функция bin()?

  1. Вы задаёте целое число. Это число будет преобразовано в двоичный формат.
  2. Python применяет функцию bin() к этому числу. Функция возвращает строку, которая начинается с префикса '0b'.

📍Теперь необходимо добавить функцию bin() в основную программу:

Начало программы для решения задания ЕГЭ №5 по информатике.
Начало программы для решения задания ЕГЭ №5 по информатике.

Переходим к следующему этапу →

③ В полученной записи все нули заменяются на единицы, все единицы  — на нули.

111000 → 000111

  • Как заменить символы в Python?

— Использовать встроенный метод replace()

-8

Метод replace в Python

— заменяет указанный символ или подстроку на новую

Синтаксис метода:
str.replace(old, new, k)

  • str — строка, к которой применяется метод
  • old — заменяемый символ или подстрока
  • new — символ или подстрока, на которую происходит замена
  • k (необязательный параметр) — максимальное количество замен

Примеры использования метода replace():

Пример работы метода replace() в Питоне на строке а = '10100'.
Пример работы метода replace() в Питоне на строке а = '10100'.

Если указать параметр (k = 1) в методе replace(), то произойдёт всего одна (первая) замена переменной

Замена символов с помощью метода replace

Попробуем выполнить замену символов в строке '1110011' с помощью replace()

Код программы для замены символов '1' на '0' и '0' на '1' в Python (работет не корректно).
Код программы для замены символов '1' на '0' и '0' на '1' в Python (работет не корректно).

— Программа работает... но ответ получился неправильный '0000000'

❗Если использовать метод replace() таким образом, то всегда будет получаться НЕПРАВИЛЬНЫЙ ОТВЕТ: либо все нули, либо все единицы.

  • Почему не получилась строка '0001100'?
  1. Программа сначала заменяет все нули на единицы:
    '1110011' → '1111111'
    После первой замены символов, новое значение строки (а) будет состоять только из единиц: '1111111'
  2. Следующий шаг программы: замена всех единицы на нули:
    '1111111' → '0000000'

Так как строка состоит из всех единиц, то на выходе получится строка из всех нулей.

-11
  • Как правильно использовать replace()?

— Необходимо дополнительно ввести временный (буферный) символ

Это может быть любой символ, кроме '1' и '0'. В данном примере используется символ '*' в качестве буферного.

Правильный алгоритм замены символов:

Код программы для замены всех '1' на '0', а всех '0' на '1' с помощью метода replace().
Код программы для замены всех '1' на '0', а всех '0' на '1' с помощью метода replace().

☑ Алгоритм работает корректно. Из строки '1110011' получилась строка '0001100'

→ Временный символ '*' помогает методу replace() не заменять сразу все встречающиеся символы. Буферный символ дает возможность скрыть нужные символы для последующей замены.

  • Пример алгоритма с использованием временного символа '2' ⤵
Код программы для замены всех '1' на '0', а всех '0' на '1' с помощью метода replace().
Код программы для замены всех '1' на '0', а всех '0' на '1' с помощью метода replace().

☑ Программа работает верно. Из строки '0011001' получилась строка '1100110'

📍Теперь необходимо добавить replace() в основную программу:

Часть программы для решения задания ЕГЭ №5 по информатике (не стандартный пример)
Часть программы для решения задания ЕГЭ №5 по информатике (не стандартный пример)

🔒Проверка кода

На экран необходимо вывести значение переменной (n) в 2 СС, до и после замены символов ↓

Проверка кода с помощью функции print(). Вывод на экран промежуточных результатов.
Проверка кода с помощью функции print(). Вывод на экран промежуточных результатов.

☑ Алгоритм работает! Все символы заменяются корректно:

  • до замены: 10010
  • после замены: 01101

Переходим к следующему этапу →

Из полученного числа удаляются ведущие нули

00111001 → 111001

  • Что значит ведущие нули?

— Это нули, которые стоят перед значащими цифрами в числе (011, 00011)

  • Как появились ведущие нули?

— На предыдущем шаге, при замене символов (replace)

Если число начинается с символа 1 (например: 100, 11110, 110100), то при замене символов в этом числе появятся ведущие нули.

100 → 011

11110 → 00001

-16
  • Обязательно ли удалять ведущие нули?

⭕ В ДАННОЙ ЗАДАЧЕ ВЫ МОЖЕТЕ НЕ УДАЛЯТЬ ВЕДУЩИЕ НУЛИ

На следующем шаге необходимо перевести число в десятичную систему счисления, с помощью функции int().

Функция int() автоматически убирает ведущие нули при переводе в 10 СС. Даже если в числе есть ведущие нули, они не окажут влияния на результат.

Поэтому данный пункт можно пропустить и перейти к следующему

⑤ Результат переводится в десятичную систему счисления

int('111001') = 57

  • Как перевести число в 10 СС?

— Использовать встроенный метод int()

  • Как работает метод int() в Python?

Синтаксис: int(x, base)

  • x — значение, которое нужно преобразовать в целое число (str)
  • base — основание системы счисления (от 2 до 36)

📥Пример перевода из 2 СС в 10 СС с помощью метода int() ⤵

Код программы для перевода чисел из 2 СС в 10 СС с помощью метода int().
Код программы для перевода чисел из 2 СС в 10 СС с помощью метода int().

Важное правило:

Для корректного перевода в 10 СС с помощью встроенной функции int(), число должно быть строчного типа (str)

📍Теперь необходимо реализовать данный алгоритм в основной программе ⤵

Код программы после завершения 5 этапа. Перевод в 10 СС с помощью функции int().
Код программы после завершения 5 этапа. Перевод в 10 СС с помощью функции int().

🔒Проверка кода

Проверка кода с помощью функции print(). Вывод на экран промежуточных результатов.
Проверка кода с помощью функции print(). Вывод на экран промежуточных результатов.

Переходим к следующему этапу →

⑥ Результатом работы алгоритма становится разность исходного числа  N и числа, полученного на предыдущем шаге.

Результат: N - R

  • Что значит: "исходное число N"?

— Переменная (n), которая используется в цикле for

  • Что значит: "число, полученное на предыдущем шаге"?

— Это число (r). Оно получено из числа (n) после всех преобразований (замены цифр, удаления ведущих нулей и переводе в 10 СС)

  • Что значит "в результате работы алгоритма"?

— Это число, которое будет получено после завершения алгоритма

В данной задаче под результатом подразумевается разность исходного числа (n) и числа, полученного после всех преобразований (r)

📍Данный этап является промежуточным, поэтому основная программа не требует изменений.

Необходимо выполнить проверку кода и вывести на экран разницу значений (n - r)

🔒Проверка кода

Проверка кода с помощью функции print(). Вывод на экран промежуточных результатов.
Проверка кода с помощью функции print(). Вывод на экран промежуточных результатов.

Следующий этап →

⑦ Пример. Дано число N  =  22

В результате работы алгоритма должно получиться число: R  =  13

  • Для чего в условии задачи записан данный пример?

— Данный пример служит для проверки работы алгоритма

Перед тем как записать последний пункт решения, нужно протестировать программу. Совпадение результатов хороший показатель правильности алгоритма.

❗Иногда ответ может совпасть с указанным в условии, но сам алгоритм будет содержать ошибки.

Проверка кода для числа (n = 22). Пример из условия.
Проверка кода для числа (n = 22). Пример из условия.

☑ Результат работы алгоритма совпал с результатом из условия задачи.

  • range(22, 23) — данный промежуток отображает только одно число это 22
  • print(n - r) — вывод разности чисел (n) и (r) на экран

Следующий этап →

⑧ При каком наименьшем N в результате работы алгоритма получится R  =  999?

Если значение r = 999, то программа выводит на экран текущее значение (n). Если нет — алгоритм продолжит дальше искать необходимое число.

  • Как в Python выбрать число, подходящее под определенные условия?

— Использовать встроенную конструкцию (if)

С помощью условия (if) можно написать код, который сам бы отсеивал не нужные варианты.

Добавляем проверку на условие в алгоритм (if) и решение готово

🔥Итоговая программа

Код программы для решения сложного задания №5 ЕГЭ.
Код программы для решения сложного задания №5 ЕГЭ.

Ответ: 1011

👏 Поздравляю! Получен верный ответ и программа работает без ошибок

Про break

Оператор break используется для немедленного выхода из цикла. Это может быть полезно, когда вы хотите остановить выполнение цикла при выполнении определенного условия.

Как удалить ведущие нули в Python?

Задача со звездочкой 😏

  • Метод lstrip()

lstrip — это метод для работы со строками в Python. Данный метод удаляет указанные символы с левой стороны (начала) строки.

Синтаксис

str.lstrip('chars')

  • str — это строка, к которой применяется метод.
  • 'chars' — это необязательный параметр. Это символы, которые необходимо удалить. Без этого параметра, lstrip() будет удалять только пробелы.
Принцип работы метода lstrip() в Python для разных значений строк.
Принцип работы метода lstrip() в Python для разных значений строк.

Важные моменты:

  • lstrip() не изменяет оригинальную строку. В Python строки иммутабельны (неизменяемы), поэтому метод возвращает новую строку.
  • lstrip() лишь удаляет символы в начале строки, а не в конце или середине.

Теперь необходимо добавить lstrip() в основную программу ⤵

(содержит ошибку) Код программы для решения сложного задания №5 ЕГЭ с использованием метода lstrip.
(содержит ошибку) Код программы для решения сложного задания №5 ЕГЭ с использованием метода lstrip.

❗При добавлении метода lstrip() в программе возникает ошибка. Это связано с тем, что в следующей строке переменная (х) преобразуется в десятичную систему счисления.

Если (х) будет равен 0 (00, 000 и так далее), Python удалит все символы '0', и в функцию int() попадёт пустая строка. В результате программа завершится с ошибкой, поскольку int() не может обработать пустую строку.

  • Как исправить ошибку?

— Добавить условие (if). Дополнительная проверка.

→ В условии нужно указать, чтобы строка (х) обязательно содержала символ '1'. Это гарантирует, что даже после удаления всех ведущих нулей строка не будет пустой.

  • Как указать, чтобы строка содержала символ '1'?

— Использовать метод count()

Итоговая программа + метод lstrip

Код программы для решения сложного задания №5 ЕГЭ с использованием метода lstrip.
Код программы для решения сложного задания №5 ЕГЭ с использованием метода lstrip.

Отлично! Теперь программа работает без ошибок.

😉 Good job! Keep it up! Good luck!

-26

Ещё материалы по теме Python:

Как найти сумму цифр числа в Python?
МОЙ РЕПЕТИТОР9 июня 2024