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

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

F (n) = n  , при <img alt="n

F (n) = G(n∕2)∗ 2− F(n − 1)  , если 11 » class=»math» src=»/images/inform/quest/quest-3344-7.svg» width=»auto»> и остаток от деления n  на 2 равен 0

F (n) = − G (n − 1)  , если 11 » class=»math» src=»/images/inform/quest/quest-3344-10.svg» width=»auto»> и остаток от деления n  на 2 равен 1

G (n) = F(n − 1) +n  , если <img alt="n и не делится на 3

G (n) = G(n − 1) + F(n∕3)− n  , если <img alt="n и делится на 3

G (n) = n∗ n  , в других случаях

Определите наибольшее значение n  из отрезка [1;1000]  , при котором сумма цифр значения F(n)  равна 33.

Примечание: знак </> в данной задаче означает целочисленное деление.

Решение программой:

def f(n):
    if n > 11 and n % 2 == 0:
        return g(n // 2) * 2 - f(n - 1)
    if n > 11 and n % 2 == 1:
        return -g(n - 1)
    return n

def g(n):
    if n < 12 and n % 3 != 0:
        return f(n - 1) + n
    elif n < 12 and n % 3 == 0:
        return g(n - 1) + f(n // 3) - n
    return n * n

for i in range(1000, 0, -1):
    s, summa = abs(f(i)), 0
    while s > 0:
        summa += (s % 10)
        s //= 10
    if summa == 33:
        print(i)
        break

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