(А. Богданов) Алгоритм вычисления значения функции \(F(n),\) где \(n\) – целое неотрицательное число, задан следующими соотношениями:
Определите количество значений \(n\) на отрезке \([1;~100~000],\) для которых \(F(n)\) равно \(16.\)
Решение:
Python
F = {0: 0, 1: 1}
q = 0
for n in range(2, 100_001):
curr = n
stack = []
while curr not in F:
stack.append(curr)
if curr % 2 == 0:
curr = curr // 2
else:
curr = 3 * curr + 1
for d in stack[::-1]:
if d % 2 == 0:
F[d] = F[d // 2] + 1
else:
F[d] = F[3 * d + 1] + 1
q += F[n] == 16
print(q)
Ответ: \(24\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене