Алгоритм вычисления значения функции F(n), где n - целое неотрицательное число, задан следующим соотношениями: F(n) = 1, если n ≤ 1 F(2) = 2 F(n) = n - F(n div 4) - F(n - 3), если n > 2 и n кратно 4 F(n) = 2 + F(n - 1) + F(n div 5), если n > 2 и при этом n не кратно 4. Найдите количество чисел n из промежутка [40; 120], для которых 60 < F(n) ≤ 240. Пояснение. Здесь n div a означает целую часть от деления n на a.
29
Код
def f(n): if n <= 1: return 1 if n == 2: return 2 if n > 2 and n % 4 == 0: return n - f(n // 4) - f(n - 3) if n > 2 and n % 4 != 0: return 2 + f(n - 1) + f(n // 5)
k = 0 for i in range(40, 121): if 60 < f(i) <= 240: k += 1 print(k)
Код
k = 0 f = [0] * 150 for n in range(0, 121): if n <= 1: f[n] = 1 if n == 2: f[n] = 2 if n > 2 and n % 4 == 0: f[n] = n - f[n // 4] - f[n - 3] if n > 2 and n % 4 != 0: f[n] = 2 + f[n - 1] + f[n // 5] for s in f: if 40 <= n <= 120 and 60 < s <= 240: k += 1 print(k)