Автор | Сообщение |
|
Отправлено: 24.05.23 16:58. Заголовок: задание 16 (№ 2283)
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями: F(n) = n*n + 4*n + 3, при n > 25 F(n) = F(n+1) + 2*F(n+4), при n ≤ 25, кратных 3 F(n) = F(n+2) + 3*F(n+5), при n ≤ 25, не кратных 3 Определите количество натуральных значений n из отрезка [1; 1000], для которых сумма цифр значения F(n) равна 24. l = set() def f(n): if n == 0: return 0 if n > 25: return n*n + 4*n + 3 if n <= 25 and n % 3 == 0: return f(n + 1) + 2*f(n + 4) if n <= 25 and n % 3 != 0: return f(n+2) + 3*f(n+5) for n in range(1,1000): while f(n) > 0: k += f(n) % 10 f(n) //= 10 if k == 24: l.add(k) print(len(l)) скажите пожалуйста в чем ошибка
|
 |
|
Ответов - 1
[только новые]
|
|
|
Отправлено: 27.05.23 06:24. Заголовок: а почему вы выбрали ..
а почему вы выбрали set , эта команда убирает одинаковые элементы, лучше использовать массив и if вне цикла while l =[] def f(n): if n > 25: return n*n + 4*n + 3 if n <= 25 and n % 3 == 0: return f(n + 1) + 2*f(n + 4) if n <= 25 and n % 3 != 0: return f(n+2) + 3*f(n+5) for n in range(1,1000): g=f(n) k=0 while g> 0: k += g % 10 g //= 10 if k == 24: l.append(k) print(len(l))
|
 |

|