16 задание ЕГЭ по информатике
Помогите решить задание. Мой код выдаёт не тот ответ. Правильный ответ: 384
def f(n):
if n > 20:
return n*n*n
elif n <= 20 and n % 2 == 0:
return 3*f(n-1) + f(n+3)
elif n <= 20 and n % 2 != 0:
return f(n+2) + 2*f(n+3)
c = 0
for i in range(1, 1001):
k = str(f(i))
zero = 0
for i in k:
if i == '1':
zero += 1
if zero < 1:
c += 1
print(c)
Ответы (2 шт):
Автор решения: Jack_oS
→ Ссылка
def f(n):
if n > 20:
return n*n*n + n # опечатка 1: не хватает +n
elif n % 2 == 0: # условия можно упростить
return 3 * f(n+1) + f(n+3) # опечатка 2: +1, а не -1
else:
return f(n+2) + 2 * f(n+3)
count = 0
for i in range(1, 1001):
k = str(f(i))
if '1' not in k: # проверка на отсутствие 1 в числе
count += 1 # можно обойтись без цикла for i in k
print(count)
выведет 384
Автор решения: iEPCBM
→ Ссылка
Подправил код, теперь работает правильно. Пояснения в коде
def f(n):
if n > 20:
return n*n*n+n # тут +n забыли
elif n <= 20 and n % 2 == 0:
return 3*f(n+1) + f(n+3) # здесь должно быть не n-1, а n+1
elif n <= 20 and n % 2 != 0:
return f(n+2) + 2*f(n+3)
c = 0
for i in range(1, 1001):
k = str(f(i))
zero = 0
for i in k:
if i == '1':
zero += 1
if zero < 1: # Надо вывести количество чисел, а не цифр
c += 1
print(c)
