Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задание из ЕГЭ по информатике

Михаил Колосов Ученик (157), открыт 1 месяц назад
У исполнителя Калькулятор имеется три команды:
А) Вычесть 3
Б) Вычесть 1
В) Вычесть 4
Сколько существует программ, для которых при исходном числе 43 результатом является число 17, и при этом траектория вычислений не содержит чисел 23 и 20 одновременно?
2 ответа
Негей Просветленный (30488) 1 месяц назад
В егэ будет только исполнитель редактор
Михаил КолосовУченик (157) 1 месяц назад
Тут на исполнителя не нужно внимание обращать, он тут не нужен
Негей Просветленный (30488) Михаил Колосов, ну как я понимаю это 12 задание, а в нем только редактор
CPT Просветленный (20572) 1 месяц назад
Для решения этой задачи мы можем использовать метод динамического программирования, чтобы найти количество различных путей, которые можно использовать для достижения числа 17 из числа 43, не проходя через числа 23 и 20. Мы будем двигаться от числа 17 к числу 43, добавляя числа 1, 3 и 4, и будем отслеживать количество способов достичь каждого числа.

Давайте определим ( P(n) ) как количество программ, которые преобразуют число ( n ) в 17. Тогда:

[ P(17) = 1 ] [ P(18) = P(17) ] [ P(19) = P(18) ] [ P(20) = 0 ] (так как мы не можем проходить через 20) [ P(21) = P(18) + P(19) ] [ P(22) = P(19) + P(21) ] [ P(23) = 0 ] (так как мы не можем проходить через 23) [ P(24) = P(21) ] [ P(25) = P(22) + P(24) ] [ … ] [ P(43) = P(40) + P(42) + P(39) ]

Таким образом, мы продолжаем вычислять ( P(n) ) для каждого значения ( n ) от 17 до 43, не учитывая значения 20 и 23. В конце концов, ( P(43) ) даст нам искомое количество программ. Не забудьте, что если ( n ) равно 20 или 23, то ( P(n) ) должно быть равно 0, так как эти числа не должны встречаться в траектории вычислений.

Это решение предполагает, что вы знакомы с основами динамического программирования. Если вам нужна дополнительная помощь в понимании этого метода или решении задачи, пожалуйста, дайте мне знать!
Михаил КолосовУченик (157) 1 месяц назад
А какой ответ у этой задачи?
CPT Просветленный (20572) Михаил Колосов,
 def calculate_ways(): 
    ways = [0] * 44  # Создаем список для хранения количества способов 
    ways[17] = 1  # Начальное условие 
 
    for i in range(18, 44): 
        if i == 23 or i == 20:  # Пропускаем числа 23 и 20 
            continue 
        ways[i] = ways[i - 1] + ways[i - 3] + ways[i - 4] 
 
    return ways[43]  # Возвращаем количество способов достичь 43 
 
# Выводим результат 
print(calculate_ways()) 
 
Похожие вопросы