Top.Mail.Ru
Ответы

ЕГЭ информатика помогите пожалуйста решить 23 задачу на Python

8 или 13 - это не понятно, поскольку всегда было "и", а не "или"
Ответ:270, но я не знаю как его получить
Вот мое решение:

По дате
По рейтингу
Аватар пользователя
Мастер
2мес

я тоже сталкивался с этой задачей, когда готовился к егэ. мне помогло, что я учился в Умскул , там объясняют такие моменты. попробуй использовать условие "или" в коде, это может помочь. ответ 270, если правильно посчитаешь. удачи!

Аватар пользователя
Мыслитель

def count_programs(start, end, via=None):
# Создадим словарь для хранения количества программ
dp = {}

def helper(x):
if x in dp:
return dp[x]
if x > end:
return 0
if x == end:
return 1

# Количество программ от текущего числа до конечного
dp[x] = helper(x + 1) + helper(x + 2) + helper(x * 2)
return dp[x]

total = helper(start)

if via is None:
return total

# Теперь нужно проверить сколько программ проходит через via
dp = {}
count_start_to_via = helper(start)

dp = {}
count_via_to_end = helper(via)

return count_start_to_via * count_via_to_end

start = 4
end = 16
via1 = 8
via2 = 13

# Количество программ, проходящих через 8 или 13
count_via1 = count_programs(start, end, via1)
count_via2 = count_programs(start, end, via2)

# Общее количество программ, проходящих через 8 или 13
# Учтем, что могут быть программы, проходящие через оба числа
count_via_both = count_programs(start, end, via1) * count_programs(via1, end, via2) if via1 < via2 else count_programs(start, end, via2) * count_programs(via2, end, via1)

# Суммируем результаты, учитывая пересечение
result = count_via1
+ count_via2 - count_via_both

print(result)

Аватар пользователя
Оракул

Попробуй f(4,8)*f(8,16)+f(4,13)*f(13,16)-f(8,13)