Источник: https://kpolyakov.spb.ru/
Алгоритм вычисления функции , где
– целое неотрицательное число, задан следующими соотношениями:
в остальных случаях.
Определите количество значений на отрезке
, для которых
.
n = 1000000 * 500
# Инициализируем список f длиной n, заполняя его единицами
f = [1] * n
# Счетчик для подсчета количества значений f[i], равных 3
c = 0
for i in range(n):
if i == 0:
# Для первого элемента списка устанавливаем значение равным 1
f[i] = 1
elif i % 2 != 0: # Если индекс i нечетный,
# устанавливаем f[i] равным 1 + f[i - 1]
f[i] = 1 + f[i - 1]
else: # Если индекс i четный,
# устанавливаем f[i] равным f[i // 2]
f[i] = f[i // 2]
# Проверяем, равно ли значение f[i] тройке
if f[i] == 3:
c += 1 # Если да, увеличиваем счетчик c на 1
print(c)
Ответ: 406