Задача к ЕГЭ по информатике на тему «одна функция» №10

Алгоритм вычисления значения функции F (n)  , где n  — целое число, задан следующими соотношениями:

F (n) = 2n + 3  , при 10 » class=»math» width=»auto»>

F (n) = F(n +2) +2 ∗F (n + 1)  , при <img src="/images/inform/quest/quest-3331-6.svg" alt="n

Определите количество значений n  из отрезка [− 1000;1000]  , при которых значение F (n)  кратно 3.

### Подключим lru_cache и sys
### для запоминания посчитанных значений рекурсии
### а также увеличения глубины рекурсии (sys)
from functools import lru_cache
import sys

sys.setrecursionlimit(100000000)
@lru_cache(None)

def f(n):
    if n > 10:
        return 2 ** n + 3
    else:
        return f(n + 2) + 2 * f(n + 1)
ans = 0
for i in range(-1000, 1001):
    if f(i) % 3 == 0:
        ans += 1
print(ans)

Ответ: 253
Оцените статью
Я решу все!