Найти в Дзене
IT-Шпаргалка

Разбор 5 задания ЕГЭ по информатике (Python) | Анализ и построение алгоритмов для исполнителей

Оглавление

Задание №5 не является сложным, особенно при анализе с точки зрения программирования. Главное – внимательно следовать предложенным инструкциям и обращать внимание на то, какой именно ответ требуется в задании. Ошибки часто возникают не из-за неправильного выполнения алгоритма, а из-за невнимательности при записи ответа.

Для успешного решения не требуется специальных знаний, за исключением владения одним из языков программирования. (Python для ЕГЭ будет одним из самых лучших примеров)

Пример №1

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

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

2. Далее эта запись обрабатывается по следующему правилу:

а) если число чётное, то к двоичной записи числа слева дописывается 10;

б) если число нечётное, то к двоичной записи числа слева дописывается 1 и справа дописывается 01.

Полученная таким образом запись является двоичной записью искомого числа R.

3. Результат переводится в десятичную систему и выводится на экран.

Укажите максимальное число R, которое может быть результатом работы данного алгоритма, при условии, что N не больше 12. В ответе запишите это число в десятичной системе счисления.

Решение:

Алгоритм на языке программирования Python (Пример №1)
Алгоритм на языке программирования Python (Пример №1)

Разберём этот алгоритм по шагам:

  1. Создаётся пустой список mas, который будет хранить значения r для определённых n.
  2. Цикл for перебирает все числа n от 0 до 999 включительно.
  3. Перевод n в двоичную систему:
    bin(n)[2:] – функция bin() возвращает строку вида '0b...', а [2:] убирает префикс '0b', оставляя только двоичное представление числа.
  4. Формирование новой двоичной строки r:
    Если n чётное (n % 2 == 0), к r добавляется "10" в начало.
    Если n нечётное (n % 2 != 0), r дополняется "1" в начале и "01" в конце.
  5. Преобразование обратно в десятичную систему:
    int(r, 2) – переводит двоичную строку r в десятичное число.
  6. Фильтрация значений:
    Если n ≤ 12, то результат r добавляется в список mas.
  7. Вывод максимального r из списка mas.

Ответ: 109

Пример №2

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

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

2. К этой записи дописываются справа ещё два разряда по следующему правилу:

а) складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;

б) над этой записью производятся те же действия — справа дописывается остаток от деления суммы её цифр на 2.

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

3. Результат переводится в десятичную систему и выводится на экран.

Укажите минимальное число R, которое превышает число 75 и может являться результатом работы данного алгоритма. В ответе запишите это число в десятичной системе счисления.

Алгоритм на языке программирования Python (Пример №2)
Алгоритм на языке программирования Python (Пример №2)

Разбор:

Определение вспомогательной функции summa_chisl(a)

  • Функция summa_chisl(a) принимает строку a (которая будет двоичной записью числа).
  • Она перебирает каждый символ в a, преобразует его в число (int(i)) и суммирует.
  • Возвращает сумму всех цифр в строке a.
  1. Создаётся пустой список mas, который будет хранить значения r для определённых n.
  2. Цикл for перебирает все числа n от 0 до 999 включительно.
  3. Перевод n в двоичную систему:
    bin(n)[2:] – функция bin() возвращает строку вида '0b...', а [2:] убирает префикс '0b', оставляя только двоичное представление числа.
  4. Формирование новой двоичной строки r:
    вычисляется сумма всех цифр двоичной строки r с помощью summa_chisl(r), остаток от деления суммы на 2 (summa_chisl(r) % 2) добавляется в конец строки r (0 или 1), повторяется тот же процесс: вычисляется новая сумма цифр (r) и снова добавляется остаток от деления на 2.
  5. Преобразование обратно в десятичную систему:
    int(r, 2) – переводит двоичную строку r в десятичное число.
  6. Фильтрация значений:
    Если n ≤ 12, то результат r добавляется в список mas.
  7. Вывод максимального r из списка mas.

Ответ: 78

Пример №3

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится троичная запись числа N.

2. Далее эта запись обрабатывается по следующему правилу:

а) если число N делится на 3, то слева к троичной записи приписывается «1», а справа «02»;

6) если число N на 3 не делится, то остаток от деления на 3 умножается на 4, переводится в троичную запись и дописывается в конец троичной записи.

Полученная таким образом запись является троичной записью искомого числа R.

3. Результат переводится в десятичную систему и выводится на экран.

Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, меньшее 199.

Алгоритм на языке программирования Python (Пример №3)
Алгоритм на языке программирования Python (Пример №3)

Разбор:

1. Функция perevod3(a) – перевод числа в троичную систему

  • Создаётся пустая строка s, которая будет содержать число в троичной системе.
  • Пока число a больше 0: Остаток от деления a на 3 добавляется в строку s. Число a целочисленно делится на 3 (то есть уменьшается, убирая последнюю троичную цифру).
  • В итоге получается строка, содержащая число в троичной системе, но записанное в обратном порядке.
  • Используется [::-1], чтобы перевернуть строку и получить правильное представление.

2. Создаётся пустой список mas

  • В этот список будут добавляться числа n, удовлетворяющие условиям.

3. Цикл for перебирает все числа n от 0 до 999 включительно.

4. Перевод n в двоичную систему:

  • Перевод n в троичную систему с помощью perevod3(n)

5. Формирование новой троичной строки r по условию:

  • Если n делится на 3 (n % 3 == 0), то:
    К началу строки r добавляется "1", а в конец "02".
  • Если n не делится на 3, то:
    К числу r добавляется троичная запись числа (n % 3) * 4, полученная с помощью perevod3().

6. Преобразование обратно в десятичную систему:

  • int(r, 2) – переводит двоичную строку r в десятичное число.

7. Фильтрация значений:

  • Если n ≤ 12, то результат r добавляется в список mas.

8. Вывод максимального r из списка mas.

Ответ: 20.

Понравилась статья? Хочешь лучше понимать информатику, программирование и разбираться в различных программах? Тогда поддержи лайком, подпишись на канал и поделись материалом с друзьями! Если у тебя остались вопросы или что-то стало неясно — смело спрашивай в комментариях!

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