Олимпиада по искусственному интеллекту 7–8 классы — муниципальный этап ВсОШ 2025/2026: задания и ответы
Официальный комплект муниципального этапа Всероссийской олимпиады школьников по искусственному интеллекту для 7–8 классов (2025/2026 учебный год). Задания и решения с критериями оценивания — скачайте PDF или прорешайте онлайн по тексту ниже.
Задания — текст для прорешивания
Текст извлечён из официального PDF автоматически: формулы, таблицы и рисунки могут отображаться неточно — сверяйтесь с документом выше.
Разбор заданий муниципального этапа ВсОШ 2025/26 по искусственному интеллекту...7-8 классы
Максимальное количество баллов за олимпиаду — 600
Задание 1. Задача по геометрии Саша нарисовал выпуклый многоугольник с помощью компьютерной программы и отправил модели ИИ запрос вычислить сумму его углов. Он получил неверный ответ 500◦ . Оказалось, что один из углов многоугольника модель учла дважды. Чему равен этот угол? Ответ выразите в градусах. Напомним, что в выпуклом многоугольнике все углы меньше 180◦ .
Задание 2. Математика в чат-боте Дима выбрал два натуральных числа 𝑎 и 𝑏 и затем отправил запрос модели ИИ найти значение выражения 𝑎 + 𝑏 · 2 (он записал это выражение на бумажке, сфотографировал и загрузил полученную фотографию). Из-за неаккуратного почерка модель распознала записанное выражение как 𝑎 + 𝑏 2 и в результате ответ модели оказался на 80 больше правильного. Найдите последнюю цифру числа 𝑎 · 𝑏.
Задание 3. Градиентный спуск На прямой изучают работу очень простого «искусственного интеллекта», который зависит всего от одного числа — параметра 𝑤. Для каждого целого 𝑤 от 1 до 10 заранее посчитана ошибка 𝐸(𝑤) этого ИИ на обучающих примерах: 𝑤 𝐸(𝑤)
1 9
2 5
3 2
4 4
5 6
6 7
7 3
8 1
9 2
10 4
ИИ обучают с помощью следующего алгоритма изменения параметра 𝑤 (аналог градиентного спуска). 1. Сначала выбирают начальное целое значение параметра 𝑤 от 1 до 10. 2. Рассматривают «соседей» текущего значения 𝑤: • слева — число 𝑤 − 1 (если 𝑤 > 1); • справа — число 𝑤 + 1 (если 𝑤 < 10). 3. Если среди существующих соседей есть такие, у которых ошибка строго меньше: 𝐸(𝑤 сосед ) < 𝐸(𝑤), то переходят к тому соседу, у которого ошибка наименьшая (среди соседей). 4. Затем снова выполняют шаг 2 и так далее, пока не окажется, что у всех существующих соседей ошибка не меньше текущей. B этот момент алгоритм останавливается; говорят, что он застрял в локальном минимуме. Из таблицы видно, что наименьшее значение ошибки достигается при 𝑤 = 8; это глобальный минимум. В реальных задачах часто запускают обучение много раз из разных начальных точек, чтобы увеличить шанс попасть в глобальный минимум. Будем считать, что: • в каждом запуске начальное значение 𝑤 выбирается случайно и равновероятно из чисел 1, 2, ..., 10; • разные запуски независимы; • запуск считается успешным, если алгоритм в итоге остановился в глобальном минимуме при 𝑤 = 8. При каком наименьшем количестве запусков вероятность того, что хотя бы один запуск окажется успешным, будет не меньше 95%?
Задание 4. Лидер продаж в категории Интернет-магазин агрегирует товары по категориям. Данные находятся в файле, который вы можете скачать в форматах XLSX, ODS или CSV. Для каждого товара известны три значения: category, score, label. • category — категория товара; • score — оценка интереса, число из диапазона [0, 1]; • label — факт покупки: 0 или 1. В каждой категории на витрине показываются все товары, у которых значение score является максимальным среди всех товаров той же категории. Для каждой категории найдите её максимальную оценку: max_score(𝑔) = max{score : category = 𝑔}. Выберите все строки, где score = max_score(𝑔). Если в категории несколько товаров делят максимум, выбираются все. Сколько выбранных строк имеют label = 1?
Разбор заданий муниципального этапа ВсОШ 2025/26 по искусственному интеллекту...7-8 классы
Задание 5. ICPC Ограничение по времени: 2 секунды Ограничение по памяти: 256 мегабайт В машинном обучении ансамбли работают лучше, когда в них есть разнообразие моделей: смешивают разные архитектуры и источники признаков, чтобы усилить общий результат. Однородные ансамбли часто переобучаются и хуже обобщают, а разнородные — устойчивее и сильнее. Рассмотрим команды как ансамбль людей. Скоро начнётся новый сезон ICPC, а значит, известному тренеру Михаилу необходимо собрать команду, которая его выиграет! Ранее такое уже случалось, получится и в этом году. Секрет прост — нужно, чтобы в команде были и математики, и программисты. Если в команду войдут только программисты или только математики, результат хорошим не будет. Прямо сейчас у Михаила для распределения есть 𝑛 математиков и 𝑚 программистов. Сколькими способами можно собрать ровно одну команду из трёх человек на ICPC?
Формат входных данных Первая строка содержит два целых числа 𝑛 и 𝑚 (1 ⩽ 𝑛, 𝑚 ⩽ 105 ) — количества математиков и информатиков соответственно.
Формат выходных данных Выведите одно целое число — количество способов собрать одну успешную команду из трёх человек для участия в ICPC.
Примеры
стандартный ввод 2 3
стандартный вывод 9
Критерий оценивания: точное совпадение ответа — 100 баллов Максимальный балл за задание — 100
Задание 6. Коллектив Ограничение по времени: 2 секунды Ограничение по памяти: 256 мегабайт В эпоху больших данных обучение становится распределённым, а ресурсы — на вес золота. B случае распределённого обучения на разных устройствах какие-то операции возможно производить эффективно, только если необходимые модули находятся в одном кластере. B таких случаях очень важно уметь распределять вычисления для достижения наилучшего результата с данными ресурсами. Эту идею можно продемонстрировать на взаимодействии людей. В исследовательском центре одной небезызвестной компании работает 𝑛 сотрудников. Про каждого сотрудника известно, что он является выпускником вуза с номером 𝑏 𝑖 , а его личный вклад в решение сложных задач равен 𝑎 𝑖 . Сотрудникам необходимо решить очень сложную задачу. Для большей эффективности они будут работать над задачей парами. Рассмотрим все пары различных сотрудников (𝑖,𝑗), где 1 ⩽ 𝑖 < 𝑗 ⩽ 𝑛: • пара сотрудников (𝑖,𝑗) считается допустимой, если они выпускники одного и того же вуза, то есть 𝑏 𝑖 = 𝑏 𝑗 ; • вклад допустимой пары (𝑖,𝑗) в решение равен 𝑎 𝑖 + 𝑎 𝑗 ; • если 𝑏 𝑖 ≠ 𝑏 𝑗 , то такая пара не является допустимой и не даёт вклада в решение. Каждый работник может входить в несколько допустимых пар с разными коллегами. При этом каждая конкретная пара сотрудников (𝑖,𝑗) учитывается не более одного раза. Требуется посчитать суммарный вклад всех допустимых пар сотрудников.
Формат входных данных Первая строка входных данных содержит одно целое число 𝑛 (2 ⩽ 𝑛 ⩽ 105 ) — количество сотрудников. Вторая строка содержит 𝑛 целых чисел 𝑎 1 , 𝑎 2 , ..., 𝑎 𝑛 , где 𝑎 𝑖 (1 ⩽ 𝑎 𝑖 ⩽ 106 ) — вклад 𝑖-го сотрудника. Третья строка содержит 𝑛 целых чисел 𝑏 1 , 𝑏 2 , ..., 𝑏 𝑛 , где 𝑏 𝑖 (1 ⩽ 𝑏 𝑖 ⩽ 106 ) — номер вуза, который окончил 𝑖-й сотрудник.
Формат выходных данных Выведите одно целое число — суммарный вклад всех допустимых пар сотрудников.
Замечание В первом примере есть только один выпускник вуза 1, поэтому он не сможет образовать ни одной пары. При этом есть 3 выпускника вуза 2 и они образуют пары, которые дадут вклады 4 + 8, 4 + 8, 4 + 4 в решение. Суммарный вклад будет 12 + 12 + 8 = 32.
Разбор заданий муниципального этапа ВсОШ 2025/26 по искусственному интеллекту...7-8 классы
Примеры стандартный ввод 4 4814 2212
стандартный вывод 32
Критерий оценивания: точное совпадение ответа — 100 баллов Максимальный балл за задание — 100
Ответы и решения — показать
Официальные ответы и критерии оценивания жюри. Сначала решите задания самостоятельно.
Разбор заданий муниципального этапа ВсОШ 2025/26 по искусственному интеллекту...7-8 классы
Максимальное количество баллов за олимпиаду — 600
Задание 1. Задача по геометрии Саша нарисовал выпуклый многоугольник с помощью компьютерной программы и отправил модели ИИ запрос вычислить сумму его углов. Он получил неверный ответ 500◦ . Оказалось, что один из углов многоугольника модель учла дважды. Чему равен этот угол? Ответ выразите в градусах. Напомним, что в выпуклом многоугольнике все углы меньше 180◦ . Ответ: 140 Критерий оценивания: точное совпадение ответа — 100 баллов Максимальный балл за задание — 100 Решение. Если в Сашином многоугольнике хотя бы пять вершин, то сумма его углов хотя бы 180 ◦ · 3 = 540◦ , этот случай невозможен. Если это треугольник, сумма углов равна 180◦ , и учтенный дважды угол должен быть больше 180◦ , что невозможно. Значит, у Саши четырехугольник, его сумма углов равна 360 ◦ , и дважды был посчитан угол величиной 500◦ − 360◦ = 140◦ .
Задание 2. Математика в чат-боте Дима выбрал два натуральных числа 𝑎 и 𝑏 и затем отправил запрос модели ИИ найти значение выражения 𝑎 + 𝑏 · 2 (он записал это выражение на бумажке, сфотографировал и загрузил полученную фотографию). Из-за неаккуратного почерка модель распознала записанное выражение как 𝑎 + 𝑏 2 и в результате ответ модели оказался на 80 больше правильного. Найдите последнюю цифру числа 𝑎 · 𝑏. Ответ: 0 Критерий оценивания: точное совпадение ответа — 100 баллов Максимальный балл за задание — 100 Решение. Исходя из условия, мы получаем, что 𝑏 2 − 2𝑏 = 80, то есть (𝑏 − 10)(𝑏 + 8) = 0. Следовательно, 𝑏 = 10, поскольку число 𝑏 — натуральное, а тогда 𝑎𝑏 оканчивается нулём.
Задание 3. Градиентный спуск На прямой изучают работу очень простого «искусственного интеллекта», который зависит всего от одного числа — параметра 𝑤. Для каждого целого 𝑤 от 1 до 10 заранее посчитана ошибка 𝐸(𝑤) этого ИИ на обучающих примерах: 𝑤 𝐸(𝑤)
1 9
2 5
3 2
4 4
5 6
6 7
7 3
8 1
9 2
10 4
ИИ обучают с помощью следующего алгоритма изменения параметра 𝑤 (аналог градиентного спуска). 1. Сначала выбирают начальное целое значение параметра 𝑤 от 1 до 10. 2. Рассматривают «соседей» текущего значения 𝑤: • слева — число 𝑤 − 1 (если 𝑤 > 1); • справа — число 𝑤 + 1 (если 𝑤 < 10). 3. Если среди существующих соседей есть такие, у которых ошибка строго меньше: 𝐸(𝑤 сосед ) < 𝐸(𝑤), то переходят к тому соседу, у которого ошибка наименьшая (среди соседей). 4. Затем снова выполняют шаг 2 и так далее, пока не окажется, что у всех существующих соседей ошибка не меньше текущей. B этот момент алгоритм останавливается; говорят, что он застрял в локальном минимуме. Из таблицы видно, что наименьшее значение ошибки достигается при 𝑤 = 8; это глобальный минимум. В реальных задачах часто запускают обучение много раз из разных начальных точек, чтобы увеличить шанс попасть в глобальный минимум. Будем считать, что: • в каждом запуске начальное значение 𝑤 выбирается случайно и равновероятно из чисел 1, 2, ..., 10; • разные запуски независимы; • запуск считается успешным, если алгоритм в итоге остановился в глобальном минимуме при 𝑤 = 8. При каком наименьшем количестве запусков вероятность того, что хотя бы один запуск окажется успешным, будет не меньше 95%? Ответ: 5 Критерий оценивания: точное совпадение ответа — 100 баллов Максимальный балл за задание — 100 Решение. По таблице видно, что слева все траектории спуска (из 𝑤 = 1, 2, 3, 4, 5) приходят в локальный минимум при 𝑤 = 3, а справа все траектории (из 𝑤 = 6, 7, 8, 9, 10) приходят в глобальный минимум при 𝑤 = 8. 1
Разбор заданий муниципального этапа ВсОШ 2025/26 по искусственному интеллекту...7-8 классы Значит, при случайном равновероятном выборе начального 𝑤 из {1, . . . , 10} вероятность успешного запуска (то есть попадания в 𝑤 = 8) равна 1 5 = . 𝑝= 10 2 При 𝑁 независимых запусках вероятность того, что хотя бы один из них успешен, равна 1 − (1 − 𝑝)𝑁 = 1 − Нужно, чтобы 1− Подбором:
1 4
1 𝑁 2
≥ 0,95 ⇐⇒
1 𝑁 2
1 𝑁 2
≤ 0,05.
1 5 1 1 ≈ 0,0625 > 0,05, = ≈ 0,03125 < 0,05. 2 16 2 32 Минимальное 𝑁, при котором условие выполняется, равно 5. =
Задание 4. Лидер продаж в категории Интернет-магазин агрегирует товары по категориям. Данные находятся в файле, который вы можете скачать в форматах XLSX, ODS или CSV. Для каждого товара известны три значения: category, score, label. • category — категория товара; • score — оценка интереса, число из диапазона [0, 1]; • label — факт покупки: 0 или 1. В каждой категории на витрине показываются все товары, у которых значение score является максимальным среди всех товаров той же категории. Для каждой категории найдите её максимальную оценку: max_score(𝑔) = max{score : category = 𝑔}. Выберите все строки, где score = max_score(𝑔). Если в категории несколько товаров делят максимум, выбираются все. Сколько выбранных строк имеют label = 1? Ответ: 49 Критерий оценивания: точное совпадение ответа — 100 баллов Максимальный балл за задание — 100 Решение. В каждой категории 𝑔 находим максимальную оценку интереса max_score(𝑔) = max{score : category = 𝑔}, и выбираем все строки, где score = max_score(𝑔). Ответ — сумма значений label среди выбранных строк. Код (pandas): import pandas as pd d f = pd . read_csv ( " task9_group_top_select . c s v " ) max_score = d f . groupby ( " c a t e g o r y " ) [ " s c o r e " ] . t r a n s f o r m ( "max" ) s e l = d f [ " s c o r e " ] == max_score answer = d f . l o c [ s e l , " l a b e l " ] . sum( ) print ( answer )
Задание 5. ICPC Ограничение по времени: 2 секунды Ограничение по памяти: 256 мегабайт В машинном обучении ансамбли работают лучше, когда в них есть разнообразие моделей: смешивают разные архитектуры и источники признаков, чтобы усилить общий результат. Однородные ансамбли часто переобучаются и хуже обобщают, а разнородные — устойчивее и сильнее. Рассмотрим команды как ансамбль людей. Скоро начнётся новый сезон ICPC, а значит, известному тренеру Михаилу необходимо собрать команду, которая его выиграет! Ранее такое уже случалось, получится и в этом году. Секрет прост — нужно, чтобы в команде были и математики, и программисты. Если в команду войдут только программисты 2
Разбор заданий муниципального этапа ВсОШ 2025/26 по искусственному интеллекту...7-8 классы или только математики, результат хорошим не будет. Прямо сейчас у Михаила для распределения есть 𝑛 математиков и 𝑚 программистов. Сколькими способами можно собрать ровно одну команду из трёх человек на ICPC?
Формат входных данных Первая строка содержит два целых числа 𝑛 и 𝑚 (1 ⩽ 𝑛, 𝑚 ⩽ 105 ) — количества математиков и информатиков соответственно.
Формат выходных данных Выведите одно целое число — количество способов собрать одну успешную команду из трёх человек для участия в ICPC.
Примеры стандартный ввод 2 3
стандартный вывод 9
Критерий оценивания: точное совпадение ответа — 100 баллов Максимальный балл за задание — 100
Решение Есть два непересекающихся способа собрать команду: два математика + программист и два программиста + математик. Посчитаем общую формулу: сколько есть способов собрать команду, если двух людей нужно выбрать из группы из 𝑎 человек, а одного человека нужно выбрать из группы из 𝑏 человек. Двух людей можно выбрать 𝑎(𝑎 − 1)/2 способами, одного человека — 𝑏 способами. Для каждого выбора пары подходит любой выбор одиночного участника, значит всего способов 𝑎(𝑎 − 1)/2 · 𝑏. Применяя это к нашей задаче, получаем итоговый ответ: 𝑛(𝑛 − 1)/2 · 𝑚 + 𝑚(𝑚 − 1)/2 · 𝑛. #include <i o s t r e a m > #include <c s t d i n t > using namespace s t d ; int main ( ) { i n t 6 4 _ t n , m; c i n >> n >> m; c o u t << m ∗ n ∗ ( n − 1 ) / 2 + n ∗ m ∗ (m − 1 ) / 2 ; return 0 ; }
Задание 6. Коллектив Ограничение по времени: 2 секунды Ограничение по памяти: 256 мегабайт В эпоху больших данных обучение становится распределённым, а ресурсы — на вес золота. B случае распределённого обучения на разных устройствах какие-то операции возможно производить эффективно, только если необходимые модули находятся в одном кластере. B таких случаях очень важно уметь распределять вычисления для достижения наилучшего результата с данными ресурсами. Эту идею можно продемонстрировать на взаимодействии людей. В исследовательском центре одной небезызвестной компании работает 𝑛 сотрудников. Про каждого сотрудника известно, что он является выпускником вуза с номером 𝑏 𝑖 , а его личный вклад в решение сложных задач равен 𝑎 𝑖 . Сотрудникам необходимо решить очень сложную задачу. Для большей эффективности они будут работать над задачей парами. Рассмотрим все пары различных сотрудников (𝑖,𝑗), где 1 ⩽ 𝑖 < 𝑗 ⩽ 𝑛: • пара сотрудников (𝑖,𝑗) считается допустимой, если они выпускники одного и того же вуза, то есть 𝑏 𝑖 = 𝑏 𝑗 ; • вклад допустимой пары (𝑖,𝑗) в решение равен 𝑎 𝑖 + 𝑎 𝑗 ; • если 𝑏 𝑖 ≠ 𝑏 𝑗 , то такая пара не является допустимой и не даёт вклада в решение. 3
Разбор заданий муниципального этапа ВсОШ 2025/26 по искусственному интеллекту...7-8 классы Каждый работник может входить в несколько допустимых пар с разными коллегами. При этом каждая конкретная пара сотрудников (𝑖,𝑗) учитывается не более одного раза. Требуется посчитать суммарный вклад всех допустимых пар сотрудников.
Формат входных данных Первая строка входных данных содержит одно целое число 𝑛 (2 ⩽ 𝑛 ⩽ 105 ) — количество сотрудников. Вторая строка содержит 𝑛 целых чисел 𝑎 1 , 𝑎 2 , ..., 𝑎 𝑛 , где 𝑎 𝑖 (1 ⩽ 𝑎 𝑖 ⩽ 106 ) — вклад 𝑖-го сотрудника. Третья строка содержит 𝑛 целых чисел 𝑏 1 , 𝑏 2 , ..., 𝑏 𝑛 , где 𝑏 𝑖 (1 ⩽ 𝑏 𝑖 ⩽ 106 ) — номер вуза, который окончил 𝑖-й сотрудник.
Формат выходных данных Выведите одно целое число — суммарный вклад всех допустимых пар сотрудников.
Замечание В первом примере есть только один выпускник вуза 1, поэтому он не сможет образовать ни одной пары. При этом есть 3 выпускника вуза 2 и они образуют пары, которые дадут вклады 4 + 8, 4 + 8, 4 + 4 в решение. Суммарный вклад будет 12 + 12 + 8 = 32.
Примеры стандартный ввод 4 4814 2212
стандартный вывод 32
Критерий оценивания: точное совпадение ответа — 100 баллов Максимальный балл за задание — 100
Решение В итоговый результат вклад дают только пары с одинаковым 𝑏. Давайте для каждого значения 𝑏 посчитаем cnt[𝑏] — количество людей с таким 𝑏. Заметим, что каждый человек 𝑖 образует допустимую пару ровно с cnt[𝑏 𝑖 ] − 1 людьми. В каждую такую пару он даёт вклад 𝑎 𝑖 (вторую половину вклада даёт другой человек), поэтому суммарный вклад человека 𝑖 в ответ равен (cnt[𝑏 𝑖 ] − 1) · 𝑎 𝑖 . Ответ получается суммированием этой величины по всем людям.
Разбор заданий муниципального этапа ВсОШ 2025/26 по искусственному интеллекту...7-8 классы #include <b i t s / s t d c ++.h> using namespace s t d ; int main ( ) { i o s : : sync_with_stdio ( f a l s e ) ; cin . t i e ( nullptr ) ; int n ; c i n >> n ; v e c t o r <long long> a ( n ) , b ( n ) ; for ( int i = 0 ; i < n ; ++i ) c i n >> a [ i ] ; for ( int i = 0 ; i < n ; ++i ) c i n >> b [ i ] ; const int MAXB = 1 0 0 0 0 0 0 ; v e c t o r <long long> c n t (MAXB + 1 , 0 ) ; for ( int i = 0 ; i < n ; ++i ) ++c n t [ b [ i ] ] ; long long ans = 0 ; for ( int i = 0 ; i < n ; ++i ) { ans += a [ i ] ∗ ( c n t [ b [ i ] ] − 1 ) ; } c o u t << ans << ’ \n ’ ; return 0 ; }