Найти в Дзене
sДаёшь ОГЭ/ЕГЭ

ЕГЭ по информатике. Задание 20

В 20 задании надо показать свое умение анализировать программы с циклами и условными операторами. Я рассмотрю пример решения такого задания, использовать буду программу, представленную на языке Паскаль.

Оставим только три языка - Бейсик и алгоритмический язык не в счет.
Оставим только три языка - Бейсик и алгоритмический язык не в счет.

Для начала разберемся в программе:

Даны нам три числа x, L и M. Они целые. Вводится некоторое число x. Переменные L и M обнуляются. Далее, начинается цикл. Пока введенное число x >0, программа будет повторять следующее:

M увеличивается на 1.

если x четное (а x mod 2 = 0 именно это означает), то L также увеличивается на 1.

Затем, x делится на 2 и x принимает значение целой части от этого деления.

И новое значение x сравнивается с 0 и идет повторение цикла.

На что похоже, когда мы непрерывно делим целое число на 2?

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

То есть, мы имеем: с каждым витком цикла, мы x делим на два, число M с каждым витком цикла увеличивается на 1, то есть оно показывает нам, сколько цифр содержит двоичная запись числа x.

Переменная L увеличивается на 1 только тогда, когда x четное, а двоичное число четно, если оканчивается на 0, то есть L - это количество 0 в двоичной записи числа x.

Что имеем: в двоичной записи число x состоит из 7 цифр и содержит 6 нулей (в условии сказано, что программа сначала печатает число 6 - по программе это переменная L, а потом - число 7 - это переменная M).

Нам надо найти наименьшее x. Очевидно, что другого числа с 6 нулями из семи цифр, кроме 1000000 в двоичной системе счисления нет. Переведем это число в 10-чную систему счисления, получим 64.

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

Рассмотрим еще пример:

-3

Опять смотрим программу: три переменные x, L и M. Вводится целое число x. Переменная L имеет первоначально значение 1, а M: =0.

Цикл повторяется пока x>0.

Переменная M с каждым витком цикла увеличивается на 1.

Если x нечетное (а запись x mod 2 <> 0 именно это означает), то переменная L принимает новое значение равное произведению текущего значения на остаток от деления числа x на 8.

Как и в предыдущем примере, если мы делим число на 8, это то же самое, что мы переводим число в восьмеричную систему счисления.

Получается, что в переменной L будет записано произведение всех нечетных цифр, входящих в восьмеричную запись числа x.

Затем, x становится равным целой части от деления x на 8 и цикл повторяется.

Получается, что в M записано количество цифр, которое содержит число x в восьмеричной системе счисления.

По условию задачи сначала выводится переменная L=21, а потом M=3.

Выходит, что восьмеричная запись числа x содержит 3 цифры. Среди этих цифр есть нечетные (так как система восьмеричная, то это 1, 3, 5, 7), произведение этих цифр равно 21.

Видим, что это цифры 3 и 7. Разберемся в каком порядке они должны стоять. По условию задачи сказано, что число x нам надо указать наибольшее возможное.

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

Теперь из трех цифр 7,3 и 6 составим наибольшее. Это 763. Переводим в 10-чную систему счисления, получим 499. Это и есть ответ.

Если остались вопросы, пишите в комментариях. Обязательно отвечу. Если нужно разобрать конкретный пример, также - в комментарии.

Читайте также: Задание 1, Задание 2, Задание 3, Задание 4, Задание 5, Задание 6, Задание 7, Задание 8, Задание 9, Задание 10, Задание 11, Задание 12, Задание 13, Задание 14, Задание 15, Задание 16, Задание 17, Задание 18, Задание 19, Задание 21, Задание 22, Задание 23, Задание 24, Задание 25, Задание 26, Задание 27.

Рекомендуем почитать