Автор | Сообщение |
|
Отправлено: 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)) скажите пожалуйста в чем ошибка
|
|
|
Ответов - 2
[только новые]
|
|
|
Отправлено: 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))
|
|
|
|
Отправлено: 01.07.23 13:19. Заголовок: k=0 def f(n): i..
k=0 def f(n): if n>25: return n*n+4*n+3 if n%3==0: return f(n+1)+2*f(n+4) if n%3!=0: return f(n+2)+3*f(n+5) for n in range(1,1001): k+=(sum(int(c) for c in str(f(n)))==24) print(k)
|
|
|
|