Представлены решения задач ЕГЭ по информатике, присланных подписчиками. Рассмотрены задания различных типов и уровней сложности.
Задача 1: Обработка натурального числа
Автомат обрабатывает натуральное число n по следующему алгоритму:
- Строится двоичная запись числа n.
- Удаляется первая слева единица и все следующие непосредственно за ней нули. Если после этого в числе не остаётся цифр, результат считается равным нулю.
- Полученное число переводится в десятичную запись.
- Новое число вычитается из исходного.
- Полученная разность выводится на экран.
Вопрос: Сколько разных значений будет показано на экране автомата при последовательном вводе всех натуральных чисел от 10 до 1000?
Решение:
Задача решается перебором чисел от 10 до 1000. Для каждого числа строится двоичная запись с помощью функции bin(). Первые два символа (указывающие систему счисления) отбрасываются. Затем удаляется первая слева единица и последующие нули, результат переводится обратно в десятичную систему счисления с помощью int(S, 2). Разность между исходным числом и полученным результатом добавляется в множество для исключения дубликатов. Выводится количество элементов множества. Результат: 7.
Задача 2: Дописывание разрядов в двоичной записи
На вход подаётся натуральное число n. Строится двоичная запись числа n. К этой записи дописываются ещё несколько разрядов по следующему правилу:
- Если n чётное, то слева дописывается 1, справа 0.
- Если n нечётное, то слева дописывается 11, справа 0.
Результат переводится в десятичную систему.
Вопрос: Сколько различных результатов, принадлежащих отрезку от 800 до 1500 включительно, может быть получено в результате работы алгоритма?
Решение:
Задача решается перебором чисел от 1 до 1000. Для каждого числа строится двоичная запись, к ней дописываются разряды по описанному правилу, результат переводится в десятичную систему. Полученные значения, попадающие в интервал [800, 1500], добавляются в множество. Выводится размер множества. Результат: 44.
Задача 3: Шестнадцатеричная запись и частота цифр
Исполнитель получает на вход натуральное число n и строит новое число R следующим образом:
- Строится шестнадцатеричная запись числа n.
- Если число чётное, то справа приписывается цифра F (максимальная в шестнадцатеричной системе). В противном случае справа приписывается 0.
- Справа приписывается шестнадцатеричная цифра, равная остатку от деления суммы цифр шестнадцатеричной записи на 16.
Вопрос: Запишите в десятичной системе счисления минимальное число n, для которого максимальная цифра в полученной шестнадцатеричной записи встречается в пять раз чаще, чем минимальная.
Решение:
Задача решается перебором натуральных чисел. Для каждого числа строится шестнадцатеричная запись при помощи функции hex(), отбрасываются первые два символа. К записи добавляется F или 0 в зависимости от чётности. Далее вычисляется сумма цифр шестнадцатеричной записи с учётом того, что буквы A-F представляют числа 10-15. Остаток от деления суммы на 16 добавляется к записи. Затем определяется частота максимальной и минимальной цифр. Если частота максимальной цифры в пять раз больше частоты минимальной, число выводится. Результат: 131000058.
Задача 4: Черепаха в Кумире
Черепаха рисует фигуру по следующему алгоритму (команды в Кумире):
вперед 100 направо 90 вперед 100 направо 45 опустить_перо нц 10 вперед 30 направо 90 кц
Вопрос: Определите, сколько точек с целыми координатами будет находиться внутри области, ограниченной линией, заданной данным алгоритмом (точки на линии не учитывать).
Решение:
Фигура, нарисованная черепахой, представляет собой приблизительный ромб, составленный из нескольких прямоугольных треугольников. Количество точек внутри фигуры определяется путём подсчёта точек в каждом из треугольников, используя формулу суммы арифметической прогрессии. Добавляются точки на вертикальной оси симметрии. Результат: 882.
Задача 5: Пятибуквенные коды
Руслан составляет пятибуквенные коды из букв Р, У, С, Л, А, Н. Каждая допустимая гласная буква (А, У) может входить в код не более одного раза.
Вопрос: Сколько кодов может составить Руслан?
Решение:
Для решения используется модуль itertools. Функция product генерирует все возможные комбинации букв. Цикл перебирает полученные комбинации, проверяет условие на количество гласных букв и считает количество подходящих кодов. Результат: 4864.
Задача 6: Рекурсивная функция
Задана рекурсивная функция, которая считает количество способов получить из числа a число b, избегая при этом числа c.
Вопрос: Сколько есть способов получить из числа 225 число 1024, избегая числа 512?
Решение:
Рекурсивная функция реализуется согласно условию задачи. В ней проверяются условия: a = b, a = c, и a > b. В остальных случаях используется рекурсивная формула. Функция вызывается с параметрами 225, 1024 и 512. Результат: 327715.