P
pro·school.ru
Каталог школ
💻 ВсОШ · Муниципальный этап · 2025/2026

Олимпиада по информатике 7–8 классымуниципальный этап ВсОШ 2025/2026: задания и ответы

Официальный комплект муниципального этапа Всероссийской олимпиады школьников по информатике для 7–8 классов (2025/2026 учебный год). Задания и решения с критериями оценивания — скачайте PDF или прорешайте онлайн по тексту ниже.

Просмотр PDF: ЗаданияОткрыть в новой вкладке ↗

Задания — текст для прорешивания

Текст извлечён из официального PDF автоматически: формулы, таблицы и рисунки могут отображаться неточно — сверяйтесь с документом выше.

Муниципальный этап всероссийской олимпиады школьников по информатике (программированию) 7–8 классы, Москва, 14 декабря 2025

Задача 1. Расстановка знаков Дано выражение 1◦2◦3◦4◦5◦6◦7◦8◦9 В этом выражении вместо знаков «◦» необходимо расставить арифметические операции — по два знака сложения, вычитания, умножения, деления, так, чтобы значение полученного выражения было как можно больше. Запишите в ответе строку, полученную в результате расстановки знаков в данном выражении: в строке должны быть цифры от 1 до 9 в порядке возрастания, между цифрами должны стоять знаки, необходимо расставить по два знака каждой арифметической операции. Операция умножения обозначается знаком «∗», операция деления обозначается знаком «/». При вычислении выражения сначала выполняются операции умножения и деления слева направо. Например, запись 1 ∗ 2/3 ∗ 4 обозначает ((1 × 2)/3) × 4. Затем выполняются операции сложения и вычитания слева направо. При этом в записи ответа нельзя использовать скобки. Чем больше будет значение вашего выражения, тем больше баллов вы получите.

Страница 1 из 7

Муниципальный этап всероссийской олимпиады школьников по информатике (программированию) 7–8 классы, Москва, 14 декабря 2025

Задача 2. Замена символов Дана строка, которая может содержать только буквы «A», «B», «C», «D», «E», «F». Вам нужно заменить буквы на числа «1», «2», «3», «10», «20», «30». Одинаковые буквы должны быть заменены на одинаковые числа, разные буквы — на разные числа. Например, если «A» заменить на «1», «B» заменить на «2», а «C» заменить на «10», то из строки «ABACABA» получится число «12110121». Вам нужно придумать такой способ замены букв на числа, чтобы полученное из строки число было как можно меньше. При этом для разных заданий можно использовать разные замены. Ответьте на вопросы. 1. Какое минимальное число может получиться из строки «ABAABB»? 2. Какое минимальное число может получиться из строки «BABACCCA»? 3. Какое минимальное число может получиться из строки «DBACCADC»? 4. Какое минимальное число может получиться из строки «EEEEEDDDDCCCBBA»? 5. Какое минимальное число может получиться из строки «ABBCCDDEEFFF»?

Страница 2 из 7

Муниципальный этап всероссийской олимпиады школьников по информатике (программированию) 7–8 классы, Москва, 14 декабря 2025

Задача 3. Фабрика Бумажная фабрика ежедневно производит n пачек бумаги. Произведённые пачки поступают на склад, где упаковываются в коробки по k штук. Коробки отправляются заказчикам (заказать на фабрике можно только целое число коробок). Если число произведённых за день пачек не делится на k, то бумага остаётся на складе, пока не накопится k пачек для упаковки в коробку. Для проведения экзаменов в Москве требуется очень много бумаги — t пачек. Определите количество дней, необходимых для производства и отправки такого заказа. Рассмотрим пример. Пусть n = 14, k = 5, t = 27. Для того чтобы получить от фабрики 27 пачек бумаги, необходимо заказать 6 коробок по k = 5 пачек. В первый день будет произведено 14 пачек, из них сделают 2 коробки, и 4 пачки останутся на складе. Во второй день произведут ещё 14 пачек, вместе с 4 имеющимися на складе пачками получится 18 пачек. Из них сделают 3 коробки и ещё 3 пачки останется на складе. Итого за два дня произвели 5 коробок, а для отправки 6 коробок понадобятся 3 дня. Для такого примера ответ равен 3. Для выполнения этого задания вам даны 20 наборов значений n, k, t. Вы должны найти ответ для этих наборов данных. Данные содержатся в файле, который вы можете скачать в формате электронной таблицы Libre Office Calc или Microsoft Excel. В одной строке таблицы записаны значения n, k, t для одного набора в первых трёх столбцах, именно в таком порядке. Также вы можете скачать файл csv, в каждой из 20 строк которого записаны числа n, k, t через запятую. Вам необходимо получить ответ для каждого из 20 наборов. Для проведения вычислений вы можете использовать любые средства компьютера, например, электронные таблицы или языки программирования. Ответ нужно записать в виде 20 чисел, ответ на каждый набор данных записывается в отдельной строке. Всего в ответе должны быть 20 строк, содержащих ровно по одному целому числу. Если вы не можете дать ответ для какого-либо набора, нужно написать любое целое число. Каждый правильный ответ будет оцениваться в 5 баллов. Ничего, кроме ответа на данные тестовые наборы, сдавать не надо.

Страница 3 из 7

Муниципальный этап всероссийской олимпиады школьников по информатике (программированию) 7–8 классы, Москва, 14 декабря 2025

Задача 4. Большой квадрат Ограничение по времени:

1 секунда

Даны два прямоугольника размера a × b и c × d. Можно соединить их вместе, приложив сторону одного прямоугольника к стороне другого и склеив место соединения. Прямоугольники можно поворачивать перед склеиванием. После этого из полученной фигуры нужно вырезать квадрат со сторонами, параллельными сторонам прямоугольника. Определите максимальное возможное значение стороны квадрата. На рисунке изображены два прямоугольника со сторонами 8 × 3 и 6 × 2, из которых можно вырезать квадрат со стороной 5 (заштрихован).

Формат входных данных Программа получает на вход натуральные числа a, b, c, d, каждое в отдельной строке — стороны первого и второго прямоугольников. Все числа не превосходят 109 .

Формат выходных данных Программа должна вывести одно целое число — максимальную возможную сторону квадрата.

Пример стандартный ввод 6 2 3 8

стандартный вывод 5

Страница 4 из 7

Муниципальный этап всероссийской олимпиады школьников по информатике (программированию) 7–8 классы, Москва, 14 декабря 2025

Задача 5. Перевозка грузов Ограничение по времени:

1 секунда

Необходимо погрузить n грузов на тележки. Грузы делятся на три вида в зависимости от их массы, которая записывается целым числом килограммов. Тяжёлые грузы весят 100 и более килограммов. Средние весят от 50 до 99 килограммов. Лёгкие весят не более 49 килограммов. На одной тележке можно перевезти • один любой груз; • два лёгких груза; • один лёгкий и один средний груз. Определите минимальное число тележек, необходимое для размещения всех грузов.

Формат входных данных Первая строка входных данных содержит натуральное число n, n ⩽ 1000 — количество грузов. Следующие n строк содержат по одному целому числу от 1 до 150 — массы грузов.

Формат выходных данных Программа должна вывести одно целое число — минимальное число тележек.

Пример стандартный ввод 4 50 40 80 120

стандартный вывод 3

Замечание В примере из условия один тяжёлый груз, два средних и один лёгкий. Понадобятся три тележки. На одну тележку положим тяжёлый груз, на вторую — средний груз, на третью — средний и лёгкий грузы.

Страница 5 из 7

Муниципальный этап всероссийской олимпиады школьников по информатике (программированию) 7–8 классы, Москва, 14 декабря 2025

Задача 6. План эвакуации Ограничение по времени:

1 секунда

Этаж здания представляет собой прямоугольник из n×m квадратных комнат. Из каждой комнаты есть проходы в соседние комнаты. В двух комнатах находятся лестницы. Необходимо разработать план эвакуации — указать для каждой комнаты направление движения в одну из соседних комнат так, чтобы, передвигаясь по комнатам только в указанных направлениях, можно было бы достичь одной из двух лестниц, пройдя минимальное расстояние. На рисунке изображён возможный план эвакуации для примера из условия. Комнаты с лестницами обозначены звёздочками.

Формат входных данных Первая строка входных данных содержит число n — количество строк в плане эвакуации, 1 ⩽ n ⩽ 100. Вторая строка входных данных содержит число m — количество столбцов в плане эвакуации, 2 ⩽ m ⩽ 100. Следующие две строки содержат числа r1 и c1 — номера строки и столбца комнаты, в которой находится первая лестница, 1 ⩽ r1 ⩽ n, 1 ⩽ c1 ⩽ m. Следующие две строки содержат числа r2 и c2 — номера строки и столбца комнаты, в которой находится вторая лестница, 1 ⩽ r2 ⩽ n, 1 ⩽ c2 ⩽ m. Гарантируется, что r1 ̸= r2 или c1 ̸= c2 . Строки нумеруются сверху вниз числами от 1 до n, столбцы нумеруются слева направо числами от 1 до m.

Формат выходных данных Программа должна вывести n строк, каждая строка должна содержать m символов. Каждый символ соответствует одной комнате. В двух комнатах с лестницами должен находиться символ «S» (прописная английская буква). В остальных комнатах находятся символы, указывающие направление движения: «<» (символ «меньше») — налево. «>» (символ «больше») — направо. «^» (символ находится на клавише «6») — вверх. «v» (строчная английская буква) — вниз. Никакие другие символы, например, пробелы, выводить не нужно. Вы можете вывести любой подходящий план эвакуации.

Страница 6 из 7

Муниципальный этап всероссийской олимпиады школьников по информатике (программированию) 7–8 классы, Москва, 14 декабря 2025

Пример стандартный ввод 3 5 1 2 2 4

стандартный вывод >S<v< >^>S< >^>^<

Замечание Решения, правильно работающие, когда n = 1, будут оцениваться в 20 баллов. Решения, правильно работающие, когда c1 = c2 , будут оцениваться в 20 баллов. Решения, правильно работающие, когда лестницы находятся в двух противоположных углах здания, будут оцениваться в 20 баллов.

Страница 7 из 7

Ответы и решения — показать

Официальные ответы и критерии оценивания жюри. Сначала решите задания самостоятельно.

Муниципальный этап всероссийской олимпиады школьников по информатике (программированию) 7–8 классы, Москва, 14 декабря 2025

Разбор задач

Задача 1. Расстановка знаков

Наибольший результат можно получить, если перемножить три наибольших числа и перед ними поставить знак +, то есть выражение будет заканчиваться на +7∗8∗9. Также в выражении будут два слагаемых, которые будут вычитаться. Их нужно сделать как можно меньше, поэтому используем операцию деления, при помощи которой можно получить выражения −2/3, −3/4, −4/5, −5/6. Из этих выражений самое маленькое по модулю — это −2/3, а следующее по величине, не содержащее цифры 2 и 3, это −4/5. Перед цифрой 6 поставим знак +. Ответ: 1 − 2/3 − 4/5 + 6 + 7 ∗ 8 ∗ 9.

Задача 2. Замена символов

В строке «ABAABB» нужно букву A заменить на 1, а букву B заменить на 2, получится число 121122. В строке «BABACCCA», чтобы получить минимальное число, нужно заменить B на 1, A на 2 и C на 3, получится 12123332. В строке «DBACCADC» используются четыре цифры, поэтому придётся использовать двузначные числа. Чтобы результат получился как можно меньше, прежде всего нужно минимизировать количество цифр в результате. Поэтому для замен будем использовать числа 1, 2, 3 и 10. В данной строке буква B встречается один раз, остальные буквы встречаются два и более раза, поэтому число будет самым коротким, если B заменить на 10. Оставшиеся буквы заменим на 1, 2, 3 в порядке их появления в строке, то есть D на 1, A на 2, C на 3. Получится 110233213. В строке «EEEEEDDDDCCCBBA» буквы A, B, C, D, E встречаются 1, 2, 3, 4, 5 раз соответственно. Поэтому наиболее частые буквы C, D, E заменим на однозначные числа 1, 2, 3, а буквы A и B — на двузначные числа 10 и 20. Какие именно буквы на какие цифры менять определяется тем, какая буква встречается в строке раньше. Ответ: 111112222333101020. В строке «ABBCCDDEEFFF» буква A встречается один раз, она будет заменена на двузначное число. Буква F встречается три раза, она будет заменена на однозначное число. Буквы B, C, D, E встречаются по два раза, и для них можно использовать как однозначные, так и двузначные числа. Пройдём по строке слева направо. A заменим на минимальное двузначное число 10. За ней идёт буква B, её можно заменить на двузначное 20 или однозначное 1. Чтобы результат был меньше, нужно использовать 1. Следующую букву C можно заменить на 20 или 2, во всех случаях длина результата будет одинаковой. Но лучше использовать число 20, т.к. в нём после цифры 2 идёт минимальная цифра 0. Для буквы D будем использовать число 3, а для следующей буквы E — число 30, т.к. число 3 нужно оставить для буквы F. Ответ: 10112020223030333.

Задача 3. Фабрика

Для решения задачи нужна операция деления с округлением вверх, то есть если результатом деления является дробное число, его нужно округлить до большего целого числа. Например, если в одной коробке 5 пачек бумаги, то для того, чтобы заказать 27 пачек бумаги, необходимо 6 коробок, т.к. 27/5 = 5,4. Будем обозначать результат деления a на b с округлением вверх, как ⌈a/b⌉. Для того, чтобы заказать t пачек бумаги в коробках по k штук необходимо ⌈t/k⌉ коробок. Общее число пачек бумаги в этих коробках равно p = k · ⌈t/k⌉ коробок. Количество дней, за которое фабрика поизведёт такое количество бумаги, производя ежедневно по n пачек, равно ⌈p/n⌉. Далее нам нужно вычислить эти значения для 20 заданных наборов n, k, t. Это можно сделать разными способами: используя электронные таблицы, написав программу или даже выполняя вычисления на калькуляторе (например, используя приложение «калькулятор» на компьютере). В электронных таблицах можно вычислить частное при помощи операции «/», а затем результат округлить вверх при помощи функции ROUNDUP (в русском интерфейсе ОКРУГЛВВЕРХ). Запишем в ячейку D2 таблицы формулу =ROUNDUP(ROUNDUP(C2/B2)∗B2/A2), скопируем её и вставим в ячейки блока D2:D21. Затем выделим этот блок, скопируем и вставим в поле для ввода ответа. В программе на языке Python вычислить ⌈a/b⌉ можно при помощи выражения (a + b − 1) // b. Поэтому для данных значений n, k, t ответ можно найти при помощи программы Страница 1 из 4

Муниципальный этап всероссийской олимпиады школьников по информатике (программированию) 7–8 классы, Москва, 14 декабря 2025 p = ( t + k − 1 ) // k ∗ k ans = ( t 1 + n − 1 ) // n Далее можно написать программу, которая вычисляет ответ для введённых чисел n, k, t и ввести 20 тестовых примеров по одному, или написать одну программу, которая будет выдавать ответ сразу для всех 20 тестовых примеров. Ответ на это задание. 2 7 106 5 175 90 38 672 301 74 1044 133 5664 41464 3441 129283 1218816 4811850 60638 38536292

Задача 4. Большой квадрат

Рассмотрим разные способы разместить квадрат внутри двух прямоугольников. Если квадрат полностью размещён внутри первого прямоугольника, то максимально возможная длина стороны равна наименьшей стороне прямоугольника min(a, b). Если он полностью размещён внутри второго прямоугольника, то min(c, d). Наконец, рассмотрим вариант, когда для вырезания квадрата понадобятся оба прямоугольника, как на картинке в условии. Пусть прямоугольники сложены так, что стороны a и c являются продолжением друг друга, а стороны b и d касаются. Тогда длина стороны квадрата не может быть больше значений a+c, b и d, и ответом будет min(a+c, b, d). Очевидно, что в этом случае нужно выбрать стороны так, чтобы a была наименьшей стороной первого прямоугольника, то есть a ⩽ b. Аналогично, c должна быть наименьшей стороной второго прямоугольника, то есть c ⩽ d. Итак, если упорядочить стороны прямоугольников, то есть сделать так, что a ⩽ b и c ⩽ d, то ответ равен max(a, c, min(a + c, b, d)). Пример такого решения. a = int ( input ( ) ) b = int ( input ( ) ) c = int ( input ( ) ) d = int ( input ( ) ) if a > b: a, b = b, a if c > d: c , d = d, c print (max( a , c , min( a + c , b , d ) ) )

Страница 2 из 4

Муниципальный этап всероссийской олимпиады школьников по информатике (программированию) 7–8 классы, Москва, 14 декабря 2025

Задача 5. Перевозка грузов

Считаем число n, затем считаем циклом n масс, увеличивая на 1 одну из трёх переменных cnt_heavy, cnt_medium, cnt_light — количество тяжёлых, средних и лёгких грузов. После считывания данных найдём ответ. Тяжёлые грузы занимают по одной тележке, поэтому в ответе будет слагаемое cnt_heavy. Общее число лёгких и средних грузов равно cnt_medium + cnt_light. На каждую тележку можно поместить не более двух таких грузов, поэтому число тележек не может быть меньше половины от этой суммы, округлённой вверх. Также на каждую тележку можно положить не более одного среднего груза, поэтому число тележек для перевозки средних и лёгких грузов не может быть меньше, чем cnt_medium. Поэтому число тележек для перевозки лёгких и средних грузов равно max(cnt_medium, (cnt_medium + cnt_light + 1) // 2). Пример решения на языке Python. n = int ( input ( ) ) cnt_heavy = 0 cnt_medium = 0 cnt_light = 0 f o r i in range ( n ) : a = int ( input ( ) ) i f a >= 1 0 0 : cnt_heavy += 1 e l i f a >= 5 0 : cnt_medium += 1 else : c n t _ l i g h t += 1 print ( cnt_heavy + max( cnt_medium , ( cnt_medium + c n t _ l i g h t + 1 ) // 2 ) )

Задача 6. План эвакуации

Если комната имеет координаты (r, c), то расстояние до лестницы с координатами (ri , ci ) равно |r − ri | + |c − ci | (так называемое «манхэттенское расстояние»). Посчитаем минимум расстояний от комнаты до двух лестниц. Из комнаты нужно перейти в ту из четырёх соседних комнат, для которой минимум расстояний до лестниц будет меньше, чем в этой комнате. Именно в эту комнату и направим стрелку из текущей комнаты. Задача имеет только реализационную трудность. В примере решения ниже используются вспомогательные функции. dist возвращает расстояние между двумя комнатами, а dist_to_exit — расстояние от комнаты до ближайшей лестницы. Вложенными циклами проходим по всем комнатам. Для перебора направлений переходов в соседние комнаты удобно использовать цикл, в котором переменная c — это символ, соответствующий направлению перемещения, а переменные dx и dy — это значение изменения координат при переходе в данном направлении. n = int ( input ( ) ) m = int ( input ( ) ) y1 = int ( input ( ) ) x1 = int ( input ( ) ) y2 = int ( input ( ) ) x2 = int ( input ( ) ) def d i s t ( a1 , b1 , a2 , b2 ) : return abs ( a1 − a2 ) + abs ( b1 − b2 ) def d i s t _ t o _ e x i t ( y , x ) : return min( d i s t ( y , x , y1 , x1 ) , d i s t ( y , x , y2 , x2 ) ) f o r y in range ( 1 , n + 1 ) : Страница 3 из 4

Муниципальный этап всероссийской олимпиады школьников по информатике (программированию) 7–8 классы, Москва, 14 декабря 2025 fo r x in range ( 1 , m + 1 ) : curr_dist = dist_to_exit (y , x) move = ’ S ’ fo r c , dy , dx in [ ( ’ ^ ’ , −1 ,0 ) , ( ’ v ’ , 1 , 0 ) , ( ’< ’ ,0 , −1) , ( ’> ’ , 0 , 1 ) ] : i f d i s t _ t o _ e x i t ( y + dy , x + dx ) < c u r r _ d i s t : move = c print ( move , end= ’ ’ ) print ( ) Многие участники написали решение по-другому. Для каждой комнаты сначала определим, к какому из двух выходов нужно двигаться, сравнив расстояния от комнаты до выходов. Пусть координаты рассматриваемой комнаты (r, c), а ближайший выход находится в комнате (ri , ci ). Если r < ri , нужно вывести указатель «вниз», если r > ri — указатель «вверх». Если c < ci — указатель «вправо», а если c > ci —- указатель «влево». Наконец, встречались и решения с нахождением кратчайшего маршрута при помощи алгоритма обхода графа в ширину, но в этой задаче это избыточно сложное решение.

Страница 4 из 4

Теория к заданиям: информатика, 7 класс

Муниципальный этап 2025/2026 — другие классы

Все классы →

Олимпиада по информатике 7 класс — другие годы и этапы

Все комплекты →