Найти количество цифр на отрезке подходящий по условию.Python 3

Задание

пока лишь удалось написать код проверки через функцию и вывести результаты. Не понимаю как сделать проверку наличия двух 8 в строке результата функции

def F(n):
if(n<=5):
    s=n+15
    return s
if((n>5) and (n%2==0)):
    s=(n//2)+(n**3)-1
    return s
if((n>5)and(n%2==1)):
    s=(n-1)+(2*n*n)+1
    return s

потом просто перебором вывожу результат


Ответы (1 шт):

Автор решения: MBo

Функция написана неверно, отсутствуют рекурсивные вызовы

def F(n):
    if(n<=5):
        return n+15
    elif (n%2==0):
        return F(n//2) +  n*n*n - 1
    else:
        return F(n-1) + 2*n*n  + 1

А для получения количества восьмёрок можно либо посчитать их в строковом представлении результата

 count8 = str(F(i)).count("8")

либо использовать остаток от деления на 10

  k = F(i)
  count8 = 0
  while k:
     if k%10==8:
         count8 +=1
     k //= 10
→ Ссылка