Информатика. ЕГЭ
Задания для подготовки
Задачи разных лет из реальных экзаменов, демо-вариантов, сборников задач и других источников
Задание 16. Информатика. ЕГЭ. Поляков-7602
- Просмотры: 319
- Изменено: 12 января 2026
(Д. Муфаззалов) Обозначим через \(a // b\) целую часть от частного при делении числа \(a\) на число \(b.\) Алгоритм вычисления значения функции \(F(n),\) где \(n\) – натуральное число, задан следующими соотношениями:
- \(F(n) = 1\) при \(n < 3;\)
- \(F(n) = F((n + 1) // 2) + 1,\) если \(n > 2.\)
Чему равно значение выражения \(F(2025)?\)
Решение:
Если число \(n\) является степенью двойки \(2^p = 1\underbrace{0 \ldots 0_2}_p,\) \(p > 1\) то результатом работы алгоритма будет число \(p = \log_2 2^p.\) Если число не является степенью двойки, то в его двоичной записи присутствуют как минимум две единицы. Это приведёт к тому, что после исполнения алгоритма получим число, равное количеству значащих разрядов в двоичной записи числа. Т.о., функция, приведённая в условии задания, для \(n > 2\) будет эквивалентна функции \(\left\lceil \log_2 n \right\rceil.\) Для нашего случая получаем \(\left\lceil \log_2 2025 \right\rceil = 11.\)
Проверяем программно
Python
from math import log2, ceil
def F(n):
if n < 3:
return 1
return F((n + 1) // 2) + 1
print(F(2025), ceil(log2(2025)))
Ответ: \(11\)
Обсуждение задания
Здесь пока нет ни одного комментария. Будьте первым!


