Автор | Сообщение |
|
Отправлено: 17.06.22 14:21. Заголовок: (№ 5268) (Е. Джобс) не сходится ответ
(№ 5268) (Е. Джобс) Алгоритм вычисления значения функции F(n), где n – целое неотрицательное число, задан следующими соотношениями: F(n) = 1 если n < 3 F(n) = F(n – 1) – F(n – 2) если n > 2 и сумма цифр числа n чётная, F(n) = F(n – 1) + F(n // 2) если n > 2 и сумма цифр числа n нечётная. Здесь // означает деление нацело. Определите значение F(100). Здравствуйте, у меня получается -1, а в ответе 23. Подскажите, где моя ошибка? from functools import * @lru_cache(None) def f(n): if n<3: return 1 if n>2 and (sum(int(d))%2==0 for d in str(n)): return f(n-1) - f(n-2) if n>2 and (sum(int(d))%2!=0 for d in str(n)): return f(n-1) + f(n//2) print(f(100))
|
|
|
Ответов - 3
[только новые]
|
|
|
Отправлено: 17.06.22 19:28. Заголовок: Всё верно. from fun..
Условие у вас неверное. from functools import * @lru_cache(None) def f(n): if n < 3: return 1 k = 0 for i in str(n): k += int(i) if k % 2: return f(n - 1) + f(n // 2) return f(n - 1) - f(n - 2) print(f(100))
|
|
|
|
Отправлено: 17.06.22 19:48. Заголовок: большое вам спасибо,..
большое вам спасибо, у меня всегда проблемы случаются, когда это касается суммы цифр
|
|
|
|
Отправлено: 07.06.23 11:29. Заголовок: a = * 110 for n in ..
a = [0] * 110 for n in range(1, 101): if n < 3: a[n] = 1 if n > 2 and sum(list(map(int, str(n)))) % 2 == 0: a[n] = a[n - 1] - a[n - 2] if n > 2 and sum(list(map(int, str(n)))) % 2 != 0: a[n] = a[n - 1] + a[n // 2] print(a[100])
|
|
|
|