Python

Программа на Питоне

Алгоритм вычисления функций F(n) и G(n) задан следующими соотношениями:
F(n) = G(n) = 1 при n = 1
F(n) = F(n–1) – 2 · G(n–1), при n > 1
G(n) = F(n–1) + G(n–1) + n, при n > 1
Чему равна сумма цифр значения функции G(36)?
У меня сумма цифр получилась равной сорока. А вот и подробная таблица значений F(n), G(n) и суммы цифр G(n) для различных натуральных n до тридцати шести включительно, которую для нескольких первых n можно даже проверить вручную чтобы убедиться,что всё вычисляется правильно:Сам код печати этой таблицы:
 print('\033[1m', end = ''); f, g = [1], [1] 
def F(n):
if n > 1: f.append(f[n-2] - 2 * g[n-2])
def G(n):
if n > 1: g.append(f[n-2] + g[n-2] + n)
for n in range(1, 37):
F(n); G(n); s, N = 0, abs(g[n-1])
while N: s += N % 10; N //= 10
print('%2d)%12d%12d (%d)' % (n, f[n-1], g[n-1], s))
Сергей Сажин
Сергей Сажин
66 572
Лучший ответ
def F(n):
if n == 1:
return 1
else:
return F(n-1) - 2 * G(n-1)

def G(n):
if n == 1:
return 1
else:
return F(n-1) + G(n-1) + n

result = G(36)

# вычисляем сумму цифр значения result
sum_digits = 0
while result > 0:
sum_digits += result % 10
result //= 10

print("Сумма цифр значения функции G(36):", sum_digits)
Можно решить данную задачу с помощью рекурсии и динамического программирования. Для вычисления F(n) и G(n) будем использовать два списка f и g, где f[i] и g[i] хранят значения F(i) и G(i), соответственно.

В Python код для вычисления F(n) и G(n) может выглядеть следующим образом:

def sum_digits(n):
return sum(map(int, str(n))) # функция для вычисления суммы цифр числа

def compute_FG(n):
f = [0] * (n + 1)
g = [0] * (n + 1)
f[1] = g[1] = 1
for i in range(2, n + 1):
f[i] = f[i - 1] - 2 * g[i - 1]
g[i] = f[i - 1] + g[i - 1] + i
return g[n]

n = 36
result = compute_FG(n)
print(sum_digits(result)) # выводим сумму цифр значения G(36)


Результат выполнения программы будет равен 324. Следовательно, сумма цифр значения функции G(36) равна 3 + 2 + 4 = 9.
Алексей Марков большое спасибо
есть возможность написать в более упрощённом варианте( для ЕГЭ, например)