Информатика. ЕГЭ
Задания для подготовки
Задачи разных лет из реальных экзаменов, демо-вариантов, сборников задач и других источников
Задание 16. Информатика. Статград-22-3-2
- Просмотры: 16424
- Изменено: 1 февраля 2025
Алгоритм вычисления значения функции \(F(n)\), где \( n \) — целое неотрицательное число, задан следующими соотношениями:
\( F(0) = 0\);
\( F(n) = F(n-1) + 1\), если \(n\) нечётно;
\( F(n) = F(n/2)\), если \( n >0\) и при этом \( n \) чётно.
Укажите количество таких значений \( n < 1~000~000~000\), для которых \( F(n) = 3\).
Решение:
Python
На Пайтоне указанный алгоритм можно записать так.
Однако выполняться такой алгоритм при больших \(n\) будет очень долго. Значит для решения этой задачи нужны другие соображения. Легко заметить, что функция \( F(n)\) есть ни что иное, как подсчёт числа единиц в двоичной записи числа. Поэтому задачу решает более простой цикл:
Эту же задачу можно решить и не особо программируя. В командной строке Пайтона определяем разрядность числа \( 1~000~000~000\) в двоичной записи.
Осталось определить, сколькими способами можно разместить три единицы по тридцати позициям: $$ C^2_{30} = \frac{30!}{3! \, 27!} = \frac{28 \cdot 29 \cdot 30}{6} = 4060. $$
Ответ: 4060
Обсуждение задания
Здесь пока нет ни одного комментария. Будьте первым!


