Муниципальный этап, 7–8 классы всероссийской олимпиады по информатике: 6 задач с официальным разбором, к 3 из них наше решение на C++.

К задаче 1

Муниципальный этап ВсОШ по информатике 2025/26, 7–8 классы.

Задачи тура

Отмечайте решённые: 0 из 6

1. Расстановка знаков

математика, перебор

Дано выражение

В этом выражении вместо знаков «» необходимо расставить арифметические операции — по два знака сложения, вычитания, умножения, деления, так, чтобы значение полученного выражения было как можно больше.

Запишите в ответе строку, полученную в результате расстановки знаков в данном выражении: в строке должны быть цифры от 1 до 9 в порядке возрастания, между цифрами должны стоять знаки, необходимо расставить по два знака каждой арифметической операции. Операция умножения обозначается знаком «*», операция деления обозначается знаком «/».

При вычислении выражения сначала выполняются операции умножения и деления слева направо. Например, запись 1*2/3*4 обозначает . Затем выполняются операции сложения и вычитания слева направо. При этом в записи ответа нельзя использовать скобки.

Чем больше будет значение вашего выражения, тем больше баллов вы получите.

Официальный разборСначала попробуйте решить сами

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»?

Официальный разборСначала попробуйте решить сами

3. Фабрика

математика, деление с округлением

Бумажная фабрика ежедневно производит пачек бумаги. Произведённые пачки поступают на склад, где упаковываются в коробки по штук. Коробки отправляются заказчикам (заказать на фабрике можно только целое число коробок). Если число произведённых за день пачек не делится на , то бумага остаётся на складе, пока не накопится пачек для упаковки в коробку.

Для проведения экзаменов в Москве требуется очень много бумаги — пачек. Определите количество дней, необходимых для производства и отправки такого заказа.

Рассмотрим пример. Пусть , , . Для того чтобы получить от фабрики 27 пачек бумаги, необходимо заказать 6 коробок по пачек. В первый день будет произведено 14 пачек, из них сделают 2 коробки, и 4 пачки останутся на складе. Во второй день произведут ещё 14 пачек, вместе с 4 имеющимися на складе пачками получится 18 пачек. Из них сделают 3 коробки и ещё 3 пачки останется на складе. Итого за два дня произвели 5 коробок, а для отправки 6 коробок понадобятся 3 дня. Для такого примера ответ равен 3.

Для выполнения этого задания вам даны 20 наборов значений , , . Вы должны найти ответ для этих наборов данных. Данные содержатся в файле, который вы можете скачать в формате электронной таблицы Libre Office Calc или Microsoft Excel. В одной строке таблицы записаны значения , , для одного набора в первых трёх столбцах, именно в таком порядке. Также вы можете скачать файл csv, в каждой из 20 строк которого записаны числа , , через запятую.

Вам необходимо получить ответ для каждого из 20 наборов. Для проведения вычислений вы можете использовать любые средства компьютера, например, электронные таблицы или языки программирования. Ответ нужно записать в виде 20 чисел, ответ на каждый набор данных записывается в отдельной строке. Всего в ответе должны быть 20 строк, содержащих ровно по одному целому числу. Если вы не можете дать ответ для какого-либо набора, нужно написать любое целое число. Каждый правильный ответ будет оцениваться в 5 баллов. Ничего, кроме ответа на данные тестовые наборы, сдавать не надо.

Официальный разборСначала попробуйте решить сами

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

1 секунда, математика, геометрия, разбор случаев

Даны два прямоугольника размера и . Можно соединить их вместе, приложив сторону одного прямоугольника к стороне другого и склеив место соединения. Прямоугольники можно поворачивать перед склеиванием. После этого из полученной фигуры нужно вырезать квадрат со сторонами, параллельными сторонам прямоугольника. Определите максимальное возможное значение стороны квадрата.

На рисунке изображены два прямоугольника со сторонами и , из которых можно вырезать квадрат со стороной 5 (заштрихован).

Два прямоугольника и квадрат 5×5
Два прямоугольника и квадрат 5×5

Формат входных данных

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

Формат выходных данных

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

стандартный вводстандартный вывод
6
2
3
8
5
Официальный разборСначала попробуйте решить сами
Наше решение на C++Полный код на C++17

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

1 секунда, жадный алгоритм, математика

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

На одной тележке можно перевезти

  • один любой груз;
  • два лёгких груза;
  • один лёгкий и один средний груз.

Определите минимальное число тележек, необходимое для размещения всех грузов.

Формат входных данных

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

Формат выходных данных

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

Замечание

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

стандартный вводстандартный вывод
4
50
40
80
120
3
Официальный разборСначала попробуйте решить сами
Наше решение на C++Полный код на C++17

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

1 секунда, реализация, манхэттенское расстояние

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

На рисунке изображён возможный план эвакуации для примера из условия. Комнаты с лестницами обозначены звёздочками.

План эвакуации для примера
План эвакуации для примера

Формат входных данных

Первая строка входных данных содержит число — количество строк в плане эвакуации, . Вторая строка входных данных содержит число — количество столбцов в плане эвакуации, . Следующие две строки содержат числа и — номера строки и столбца комнаты, в которой находится первая лестница, , . Следующие две строки содержат числа и — номера строки и столбца комнаты, в которой находится вторая лестница, , . Гарантируется, что или . Строки нумеруются сверху вниз числами от 1 до , столбцы нумеруются слева направо числами от 1 до .

Формат выходных данных

Программа должна вывести строк, каждая строка должна содержать символов. Каждый символ соответствует одной комнате. В двух комнатах с лестницами должен находиться символ «S» (прописная английская буква). В остальных комнатах находятся символы, указывающие направление движения:

  • «<» (символ «меньше») — налево.
  • «>» (символ «больше») — направо.
  • «^» (символ находится на клавише «6») — вверх.
  • «v» (строчная английская буква) — вниз.

Никакие другие символы, например, пробелы, выводить не нужно. Вы можете вывести любой подходящий план эвакуации.

Замечание

Решения, правильно работающие, когда , будут оцениваться в 20 баллов.

Решения, правильно работающие, когда , будут оцениваться в 20 баллов.

Решения, правильно работающие, когда лестницы находятся в двух противоположных углах здания, будут оцениваться в 20 баллов.

стандартный вводстандартный вывод
3
5
1
2
2
4
>S<v<
>^>S<
>^>^<
Официальный разборСначала попробуйте решить сами
Наше решение на C++Полный код на C++17

Сначала решите сами

Возьмите столько времени, сколько было на олимпиаде, и только потом открывайте разбор.

Готовиться самому

Платформа с задачами

1400+ задач с автопроверкой

или
Пробное занятие

Призёр ВсОШ, первое бесплатно