ФИПИ · ЕГЭ · Информатика · Задание 22
39 заданий открытого банка ФИПИ: впишите ответ, при затруднении — подсказка; после ответа — разбор по шагам.
Задания открытого банка ФИПИ «Задание 22. Матмодели и архитектура» (информатика). Ответ вписывается так же, как в бланк ЕГЭ: число, слово или цифры подряд, без пробелов; если в ответе два числа — через пробел, как в таблице ответа (по строкам).
Неофициальная копия. Условия заданий — из открытого банка заданий ФИПИ (fipi.ru); номер у каждого задания открывает его в банке ФИПИ. Ответы, подсказки, разборы и рисунки подготовлены reknow.ru. Нашли ошибку — нажмите «Сообщить об ошибке» у задания.
Задание 22 ЕГЭ по информатике. Знание основных понятий и законов математической логики; умение использовать математические модели и архитектуру многопроцессорных систем. На странице — 39 заданий открытого банка ФИПИ: ответ проверяется сразу, есть подсказка и подробный разбор.
Это несколько заданий из тренажёра, остальные — в тренажёре в начале страницы.
В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Приостановка выполнения процесса не допускается. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы A и B могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом столбце таблицы указан идентификатор процесса (ID), во втором столбце таблицы – время его выполнения в миллисекундах, в третьем столбце перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс независимый, то в таблице указано значение 0.
Типовой пример организации данных в файле
Определите максимальное количество процессов, которые параллельно выполняются на 16-й мс. Считать, что каждый процесс начинается в самое раннее допустимое время. Нумерация миллисекунд начинается с 1. Например, для приведённой таблицы на 6-й мс параллельно выполняются три процесса. Это процессы 2, 5 и 6.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла. | ||||||||||||||||||||||
| Файл к заданию (zip) |
import pandas as pd
df = pd.read_excel("22.xlsx")
dur, dep = {}, {}
for pid, t, d in df.values:
dur[pid] = t
dep[pid] = [int(x) for x in str(d).split(";") if int(x) != 0]
end = {}
def fin(p): # время окончания процесса p
if p not in end:
end[p] = max([fin(q) for q in dep[p]], default=0) + dur[p]
return end[p]
for p in dur: fin(p)
start = {p: end[p] - dur[p] for p in dur}
run = lambda t: sum(start[p] < t <= end[p] for p in dur)
print(run(16))Мы используем cookies и сервисы аналитики, чтобы понимать, какие темы нужнее и где сайт работает плохо. Продолжая пользоваться сайтом, вы соглашаетесь с этим. Мы используем cookies. Подробнее