Форум » Рекурсивные процедуры и функции » задание 16 » Ответить

задание 16

MAsha80: Алгоритм вычисления значения функции F(n), где 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 (в любых разрядах). def F(n): if n > 30: return n*n+3*n+ 5; if n <= 30 and n % 2 == 0: return 2*F(n+1) + F(n+4); if n <= 30 and n % 2 == 1: return F(n+2) + 3*F(n+5); m=0 for n in range(1,1001): a=abs(F(n)) k=0 while a>0: if a % 10 == 0: k+=1 a//=10 if k>2: m+=1 print(m) В чем ошибка??

Ответов - 2

MAsha80: def F(n): if n > 30: return n*n+3*n+ 5; if n <= 30 and n % 2 == 0: return 2*F(n+1) + F(n+4); if n <= 30 and n % 2 == 1: return F(n+2) + 3*F(n+5); m=0 for n in range(1,1001): a=abs(F(n)) k=0 while a>0: if a % 10 == 0: k+=1 a//=10 if k>2: m+=1 print(m)

MAsha80: k=0 def F(n): if n > 30: return n*n + 3*n+5; if n <= 30 and n % 2 == 0: return 2*F(n+1) + F(n+4); if n <= 30 and n % 2 == 1: return F(n+2) + 3*F(n+5); for n in range(1,1001): count = 0 a=abs(F(n)) while a>0: if a % 10 == 0: count += 1 a//=10 if count>=2: k+= 1 print(k)



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