Python

Напишите программу на питоне

Главная проблема заключается в переборе значений от 1 до 1000 и в нахождении числел с двумя восьмерками
for i in range(1, 1000+1):
стандартный цикл от 1 до 1000 включительно

если число превратить в строку, то искать восьмёрки удобнее
s = str(123)
Дима Рахманов
Дима Рахманов
5 315
Лучший ответ
Владимир Новиков Извиняюсь что так долго не отвечал, но "for i in range (1,1000+1):" надо присать после def f(n):

Def f(n):
For i in range(1,1000+1):
If n<=15: и т. д.?
def f(n): return n + 15 if n <= 5 else f(n - 1) + 2 * n * n + 1 if n % 2 else f(n // 2) + n * n * n - 1
print(sum(1 for i in range(1, 1001) if str(f(i)).count('8') >= 2))
Совершенно не обязательно тут числа в строки превращать, а для машины ещё не известно что быстрее и проще, пока время исполнения не измерить. Это для человека проще в цифровой десятичной записи числа обнаружить не менее двух восьмёрок, но считает то машина!
И краткость программы вовсе не означает, что она лучше.
def F(n):
----if n <= 5: return n + 15
----if n % 2: return F(n - 1) + 2 * n * n + 1
----else: return F(n // 2) + n * n * n - 1
def G(n):
----k = 0
----while n > 0:
--------if n % 10 == 8:
------------k += 1
------------if k == 2: return True
--------n //= 10
----return False
k = 0
for i in range(1, 1001):
----if G(F(i)): k += 1
print(k)
Вобщем 164 получается.