Задание №5 не является сложным, особенно при анализе с точки зрения программирования. Главное – внимательно следовать предложенным инструкциям и обращать внимание на то, какой именно ответ требуется в задании. Ошибки часто возникают не из-за неправильного выполнения алгоритма, а из-за невнимательности при записи ответа.
Для успешного решения не требуется специальных знаний, за исключением владения одним из языков программирования. (Python для ЕГЭ будет одним из самых лучших примеров)
Пример №1
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число чётное, то к двоичной записи числа слева дописывается 10;
б) если число нечётное, то к двоичной записи числа слева дописывается 1 и справа дописывается 01.
Полученная таким образом запись является двоичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Укажите максимальное число R, которое может быть результатом работы данного алгоритма, при условии, что N не больше 12. В ответе запишите это число в десятичной системе счисления.
Решение:
Разберём этот алгоритм по шагам:
- Создаётся пустой список mas, который будет хранить значения r для определённых n.
- Цикл for перебирает все числа n от 0 до 999 включительно.
- Перевод n в двоичную систему:
bin(n)[2:] – функция bin() возвращает строку вида '0b...', а [2:] убирает префикс '0b', оставляя только двоичное представление числа. - Формирование новой двоичной строки r:
Если n чётное (n % 2 == 0), к r добавляется "10" в начало.
Если n нечётное (n % 2 != 0), r дополняется "1" в начале и "01" в конце. - Преобразование обратно в десятичную систему:
int(r, 2) – переводит двоичную строку r в десятичное число. - Фильтрация значений:
Если n ≤ 12, то результат r добавляется в список mas. - Вывод максимального r из списка mas.
Ответ: 109
Пример №2
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия — справа дописывается остаток от деления суммы её цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Укажите минимальное число R, которое превышает число 75 и может являться результатом работы данного алгоритма. В ответе запишите это число в десятичной системе счисления.
Разбор:
Определение вспомогательной функции summa_chisl(a)
- Функция summa_chisl(a) принимает строку a (которая будет двоичной записью числа).
- Она перебирает каждый символ в a, преобразует его в число (int(i)) и суммирует.
- Возвращает сумму всех цифр в строке a.
- Создаётся пустой список mas, который будет хранить значения r для определённых n.
- Цикл for перебирает все числа n от 0 до 999 включительно.
- Перевод n в двоичную систему:
bin(n)[2:] – функция bin() возвращает строку вида '0b...', а [2:] убирает префикс '0b', оставляя только двоичное представление числа. - Формирование новой двоичной строки r:
вычисляется сумма всех цифр двоичной строки r с помощью summa_chisl(r), остаток от деления суммы на 2 (summa_chisl(r) % 2) добавляется в конец строки r (0 или 1), повторяется тот же процесс: вычисляется новая сумма цифр (r) и снова добавляется остаток от деления на 2. - Преобразование обратно в десятичную систему:
int(r, 2) – переводит двоичную строку r в десятичное число. - Фильтрация значений:
Если n ≤ 12, то результат r добавляется в список mas. - Вывод максимального r из списка mas.
Ответ: 78
Пример №3
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится троичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то слева к троичной записи приписывается «1», а справа «02»;
6) если число N на 3 не делится, то остаток от деления на 3 умножается на 4, переводится в троичную запись и дописывается в конец троичной записи.
Полученная таким образом запись является троичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, меньшее 199.
Разбор:
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.
Понравилась статья? Хочешь лучше понимать информатику, программирование и разбираться в различных программах? Тогда поддержи лайком, подпишись на канал и поделись материалом с друзьями! Если у тебя остались вопросы или что-то стало неясно — смело спрашивай в комментариях!
Читайте также: