Найти в Дзене

Алгоритм решения задания 14 ЕГЭ по информатике. Часть 3

Первые два типа 14 заданий ЕГЭ по информатике уже успешно освоены. Настало время заняться третьим типом! Задания этого типа объединяют в себе черты уже рассмотренных: от первого нам достался поиск определённых цифр (обычно нулей) в значении арифметического выражения, а от второго – подбор неизвестного значения для числа х. Давайте в этой статье вспомним, как мы определяли количество нужных цифр в прошлых заданиях, и научимся подбирать значения уже не конкретной цифры, а целого числа в рамках заданного диапазона. Алгоритм решения Сначала займемся поиском определённых цифр в числе. Для этого мы пользовались таким кодом: В 14 заданиях третьего типа обычно требуется найти количество нулей в числе. Так что давайте перепишем этот код в виде функции count_zero(), в которую будем передавать число num, в котором и будем искать нули, и систему счисления sys, в которой это число записано: Отлично, часть решения уже готова! Теперь приступим ко второй части. Пусть у нас дано выражение 52 — х (гд
Оглавление

Первые два типа 14 заданий ЕГЭ по информатике уже успешно освоены. Настало время заняться третьим типом!

Задания этого типа объединяют в себе черты уже рассмотренных: от первого нам достался поиск определённых цифр (обычно нулей) в значении арифметического выражения, а от второгоподбор неизвестного значения для числа х.

Давайте в этой статье вспомним, как мы определяли количество нужных цифр в прошлых заданиях, и научимся подбирать значения уже не конкретной цифры, а целого числа в рамках заданного диапазона.

Алгоритм решения

Сначала займемся поиском определённых цифр в числе. Для этого мы пользовались таким кодом:

-2

В 14 заданиях третьего типа обычно требуется найти количество нулей в числе. Так что давайте перепишем этот код в виде функции count_zero(), в которую будем передавать число num, в котором и будем искать нули, и систему счисления sys, в которой это число записано:

-3

Отлично, часть решения уже готова!

Теперь приступим ко второй части. Пусть у нас дано выражение 52 — х (где x – целое положительное число, не превышающее 6), записанное в троичной системе счисления. Нам нужно определить наибольшее значение х, при котором в троичной записи числа, являющегося значением данного арифметического выражения, содержится ровно 6 нулей.

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

Подсчитаем значение числа 512 – это будет 244 140 625. Теперь давайте перебирать значения неизвестной х от 6 до 1, вычислять значение арифметического выражения и переводить его в троичную систему счисления:

  1. х = 6: 244 140 625 – 6 = 244 140 619, в троичной записи – 122000101121222011, 5 нулей
  2. x = 5: 244 140 625 – 5 = 244 140 620, в троичной записи – 122000101121222012, 5 нулей
  3. x = 4: 244 140 625 – 4 = 244 140 621, в троичной записи – 122000101121222020, 6 нулей

Нужное значение для х найдено! Теперь давайте все это переложим на плечи нашей программы. Сначала повторим функцию для поиска нулей в числе:

-4

После чего напишем цикл для перебора значений х от 6 до 1. Как уже говорилось ранее, для наглядности сделаем диапазон range(1, 7­) и перевернём его срезом [::-1].

-5

Далее просто запишем наше выражение в переменную num:

-6

Осталось лишь подсчитать количество нулей в num на каждой итерации цикла с помощью нашей функции и, как только это количество будет равно 6, вывести значение х на экран и завершить цикл. В коде это будет выглядеть так:

-7

А вся наша программа записывается следующим образом:

-8

На это все! Давайте, как и в прошлых статьях, выведем шаблонный код решения с абстрактными переменными:

-9

Наш алгоритм решения готов, давайте его протестируем на реальных заданиях.

Пример 1

Разберём задание с такой формулировкой:

Задание 1425

«Значение арифметического выражения 9 ⋅ 11210 + 8 ⋅ 11150 – x, где x – целое положительное число, не превышающее 3000, записали в 11-ричной системе счисления. Определите наибольшее значение x, при котором в 11-ричной записи числа, являющегося значением данного арифметического выражения, содержится ровно 60 нулей.

В ответе запишите число в десятичной системе счисления.»

Итак, что нам сказано в условии:

  1. Подбирать значения будем от 2999 до 1 (не превышающее 3000)
  2. Работать будем с 11-чной системой счисления
  3. Требуется содержание ровно 60 нулей в значении арифметического выражения

Значит, в нашем шаблоне диапазон_из_условия заменяем на 3000, система_счисления – на 11, а требуемое_количество – на 60. Переписываем выражение из условия в num и решение готово. Выглядит оно так:

-10

И в результате получаем ответ на это задание – число 2992.

Пример 2

Переходим к следующему заданию:

Задание 1410

«Значение арифметического выражения   3100 — x, где x – целое положительное число, не превышающее 2030, записали в троичной системе счисления. Определите наибольшее значение x, при котором в троичной записи числа, являющегося значением данного арифметического выражения, содержится ровно один нуль.

В ответе запишите число в десятичной системе счисления.»

Сразу определим значения на замену:

  1. Диапазон – 2030
  2. Система счисления – 3
  3. Количество нулей – 1

Внесём изменения в шаблонный код:

-11

Запускаем программу и получаем число 1823, которое и записываем в ответ.

Пример 3

И последнее задание в этой статье:

Задание 1416

«Значение арифметического выражения 7350 + 7150 – x, где x – целое положительное число, не превышающее 2300, записали в семеричной системе счисления. Определите наибольшее значение x, при котором в семеричной записи числа, являющегося значением данного арифметического выражения, содержится ровно 200 нулей.

В ответе запишите число в десятичной системе счисления.»

Диапазон для неизвестного числа у нас все тот же, работаем теперь с семеричной системой и требуется наличие ровно 200 нулей в значении арифметического выражения. Отразим все это в нашем решении:

-12

И получаем ответ на это задание – 2001.

Больше заданий данного типа с подробным решением вы можете найти в нашем тренажёре.

<<< Предыдущая статья Первая статья >>>