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

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

Задание №5 не является сложным, особенно при анализе с точки зрения программирования. Главное – внимательно следовать предложенным инструкциям и обращать внимание на то, какой именно ответ требуется в задании. Ошибки часто возникают не из-за неправильного выполнения алгоритма, а из-за невнимательности при записи ответа. Для успешного решения не требуется специальных знаний, за исключением владения одним из языков программирования. (Python для ЕГЭ будет одним из самых лучших примеров) На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1. Строится двоичная запись числа N. 2. Далее эта запись обрабатывается по следующему правилу: а) если число чётное, то к двоичной записи числа слева дописывается 10; б) если число нечётное, то к двоичной записи числа слева дописывается 1 и справа дописывается 01. Полученная таким образом запись является двоичной записью искомого числа R. 3. Результат переводится в десятичную систему и выводится на экра
Оглавление

Задание №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.

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

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