πЕГЭ · ИИ-репетитор12 предметов · задания ФИПИ
Главная → Информатика → Задания №1 → Задание i01-01

Задание №1 ЕГЭ Информатика с ответом и решением

Ответ: 20

Условие

На рисунке справа схема дорог Н-⁠ского района изображена в виде графа, в таблице содержатся сведения о длинах этих дорог (в километрах).

П1П2П3П4П5П6П7
П14510
П2454055
П31560
П410402035
П51555
П65560205545
П73545

Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова длина дороги из пункта В в пункт Е. В ответе запишите целое число — так, как оно указано в таблице.

Рисунок к заданию

Подсказки — как подойти к решению

  1. Схему и таблицу рисовали независимо, поэтому первым делом сопоставь пункты П1–П7 с буквами графа по числу дорог, выходящих из пункта, — это степень вершины.
  2. Степень пункта П — количество заполненных клеток в его строке таблицы. Выпиши два списка: «буква → число дорог» по графу и «П → число дорог» по таблице — и сравнивай именно наборы степеней, а не отдельные вершины.
  3. Начинай с вершин, чья степень уникальна: если какая-то буква единственная с таким числом дорог, то и в таблице ей отвечает единственный пункт с такой степенью. Когда нужные буквы привязаны к номерам, найди клетку на пересечении их строки и столбца и выпиши стоящее там число — в симметричной клетке оно такое же.

Решение

Пункт В — единственный пункт с пятью дорогами, значит, ему соответствует П6, а пункт Е − единственный с четырьмя дорогами, значит, ему соответствует П4.

Длина дороги из П6 в П4 равна 20.

Ответ: 20.

Приведём решение Сергея Стрелюхина на языке Python.

from itertools import permutations as p

sort = lambda x: dict([k, ''.join(sorted(v))] for k, v in sorted(x.items()))

y = lambda x, c: {c[k]: ''.join(map(lambda d: c[d], v)) for k, v in x.items()}

s = {'1': '24', '2': '146', '3': '56', '4': '1267', '5': '36',\

'6': '23457', '7': '46'}

S = sort({'А': 'БВ', 'Б': 'АВ', 'В': 'АБДЕГ', 'Г': 'ВЕК', 'Д': 'ВЕ',\

'Е': 'ДВГК', 'К': 'ЕГ'})

# Получаем номера городов

print([t for i in p('1234567') if (t:={k: v for k, v in zip(i, 'АБВГДЕК')}) if sort(y(s,t))==S][0])

# Вывод: {'3': 'А', '5': 'Б', '6': 'В', '2': 'Г', '7': 'Д', '4': 'Е', '1': 'К'}

# В - 6 пункт; Е - 4 пункт Тогда В -> E == 20

Примечание. Данную программу можно использовать для решения других задач этого типа.

Приведём решение Сергея Донец на языке PascalABC.NET.

uses School;

begin

{кодировка таблицы - строки и столбцы - числа.

первая цифра в числе -> номер строки + цифры столбцов где указаны км}

var d:='124 2146 356 41267 536 623457 746';

{кодировка карты -> 1я буква исходный пункт + направление }

var m:='АБВ БАВ ВАБДЕГ ГВЕК ДВЕ ЕВГДК КЕГ';

Println(1234567);// шапка: столбцы (строки)

'АБВГДЕК'.Permutations // все буквы - перестановки

.Where(p->d.Translate('1234567',p)

//транслируем все цифры в эту перестановку

.Split.All(z->m.Split.Any(y->y.ToHashSet=z.ToHashSet))).Print;

{ вывод 1234567

КГАЕБВД КГБЕАВД

расшифровка:

нужно ВЕ (длина дороги из пункта В в пункт Е).

этим буквам соответствуют цифры 64

смотрим по таблице 64 => 20 км Ответ: 20.}

end.

Типичные ошибки

Решить это задание в тренажёре

В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №1 по информатике