Форум » Рекурсивные процедуры и функции » Не сходится ответ, в чем проблема? (номер 58 задание 16) » Ответить

Не сходится ответ, в чем проблема? (номер 58 задание 16)

Calabras123: Привет, буду благодарен всем за помощь, написал код, вроде условиям удовлетворяет, или как? Условие: 58) Алгоритм вычисления функции F(n) задан следующими соотношениями: F(n) = n • n + 3 • n + 5, при n > 30 F(n) = 2 • F(n+1) + F(n+4), при чётных n  30 F(n) = F(n+2) + 3 • F(n+5), при нечётных n  30 Определите количество натуральных значений n из отрезка [1; 1000], при которых значение F(n) содержит не менее двух значащих цифр 0 (в любых разрядах). #zadanie 58 from functools import lru_cache @lru_cache def f(n): if n>30: return n*n*+3*n+5 elif n<=30 and n%2==0: return 2*f(n+1)+f(n+4) elif n<=30 and n%2!=0: return f(n+2)+3*f(n+5) k=0 for n in range (1, 1001): c=str(f(n)) if c.count("0")>=2: k+=1 print(k) #asnwer: 249

Ответов - 2 новых

MrAndrewson: [pre2]def f(n): if n > 30: return n * n + 3 * n + 5 if n % 2 == 0: return 2 * f(n + 1) + f(n + 4) return f(n + 2) + 3 * f(n + 5) k = 0 for i in range(1, 1001): if str(f(i)).count('0') >= 2: k += 1 print(k)[/pre2] Выдает 77, как и в ответах

Calabras123: странно, возможно, я опечатался, спасибо за ответ!



полная версия страницы