Олимпиада по информатике 7–8 классы — школьный этап ВсОШ 2025/2026: задания и ответы
Официальный комплект школьного этапа Всероссийской олимпиады школьников по информатике для 7–8 классов (2025/2026 учебный год). Задания и решения с критериями оценивания — скачайте PDF или прорешайте онлайн по тексту ниже.
Задания — текст для прорешивания
Текст извлечён из официального PDF автоматически: формулы, таблицы и рисунки могут отображаться неточно — сверяйтесь с документом выше.
Школьный этап всероcсийской олимпиады по информатике (программированию) для 7–8 классов. Первая группа регионов Образовательный центр «Сириус», 21 октября 2025
Задача 1. Прикольные числа Мышке Марине подарили на день рождения большую доску. Так как она очень любит четырёхзначные числа, она сразу начала думать, что написать на подаренной доске. Больше всего Марина любит те числа, которые называются прикольными. Она любезно поделилась с нами критериями, которые делают их более прикольными: • В числе есть цифра 8. • Сумма цифр числа равна 14. • В числе все соседние цифры различаются. • В числе две пары равных цифр. Чем больше из этих критериев выполнено, тем более прикольным считается число. Мышка Марина захотела написать на доске минимальное и максимальное четырёхзначные числа без ведущих нулей, которые бы отвечали наибольшему числу этих критериев. Помогите ей с этим. В ответе запишите два четырёхзначных числа: сначала минимальное, в следующей строке — максимальное.
Страница 1 из 6
Школьный этап всероcсийской олимпиады по информатике (программированию) для 7–8 классов. Первая группа регионов Образовательный центр «Сириус», 21 октября 2025
Задача 2. Собрание сочинений На полке стоит собрание сочинений одного автора из 9 томов, пронумерованных числами от 1 до 9. Библиотекарь за одно действие может взять с полки один или несколько подряд идущих томов и поставить их между какими-то другими томами на полке, либо в начало, либо в конец полки. Например, если на полке стояли тома 1, 2, 3, 4, 5, 6, то можно получить, например, последовательность 4, 5, 1, 2, 3, 6 (тома 4 и 5 перемещаются в начало) или последовательность 1, 2, 4, 5, 3, 6 (тома 4 и 5 вставляются между томами 2 и 3). Изначально тома стоят в следующем порядке: 6, 2, 7, 8, 4, 5, 1, 9, 3 Необходимо переставить их в порядке 1, 2, 3, 4, 5, 6, 7, 8, 9, используя минимальное число описанных операций. Определите порядок следования томов на полке после совершения каждой операции. В одной строке ответа записывайте последовательность номеров томов от 1 до 9 после выполнения данной операции. Запятые, пробелы и другие символы не требуются. В первой строке должна быть записана исходная расстановка «627845193», в последней строке — искомая «123456789». Строки ответа должны получаться из предыдущих при помощи описанных операций. Чем меньше операций будет в вашем решении, тем больше баллов вы получите.
Страница 2 из 6
Школьный этап всероcсийской олимпиады по информатике (программированию) для 7–8 классов. Первая группа регионов Образовательный центр «Сириус», 21 октября 2025
Задача 3. Сигнализация Слон Семён программирует сигнализацию. У него есть три датчика, передающие показания в виде логических значений («ложь» или «истина»). Если хотя бы два датчика передают «истину», нужно включить сирену, если нет — её включать не надо. Обозначем выходы от датчиков переменными x, y, z. Программа для сигнализации представляет собой логическое выражение от x, y, z, в котором могут использоваться сами переменные, пробелы, круглые скобки, операции and (логическое И) и or (логическое ИЛИ). Другие операции и константные логические значения использоваться не могут. Сирена включается, когда результат выражения равен «истине». Чтобы сэкономить память контроллера, Слон Семён хочет использовать как можно меньше логических операций. Помогите ему составить программу. При записи ответа имена переменных и названия операций разделяйте пробелом. Символы, не описанные в условии, использовать нельзя. Длина ответа не должна превышать 100 символов. Чем меньше операций and и or будет в вашем решении, тем больше баллов вы получите. Пример записи ответа: (x and y) or (z and z). Такая программа использует три логические операции, однако не подойдёт для сигнализации. Если значение «ложь» обозначить числом «0», а «истину» обозначить «1», то значения операций x and y и x or y для всех возможных значений x и y приведены в таблице. x y x and y x or y 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 1 При отсутствии скобок операция and имеет больший приоритет, чем операция or, то есть выражение x and y or z and z обозначает (x and y) or (z and z).
Страница 3 из 6
Школьный этап всероcсийской олимпиады по информатике (программированию) для 7–8 классов. Первая группа регионов Образовательный центр «Сириус», 21 октября 2025
Задача 4. Рекламные паузы Ограничение по времени:
0.5 секунд
Слон Семён включил в онлайн-кинотеатре новый фильм «Матрица». После каждых a минут показа фильма вставляется реклама длиной b минут. Но если в момент планируемого начала рекламного блока фильм завершается, то рекламу не показывают. Фильм без рекламы длится n минут. Сколько времени займёт показ всего фильма вместе с рекламой?
Формат входных данных Первая строка входных данных содержит одно целое число a (1 ⩽ a ⩽ 109 ) — длительность блока фильма между рекламами. Вторая строка содержит одно целое число b (1 ⩽ b ⩽ 109 ) — длительность одного рекламного блока. Третья строка содержит одно целое число n (1 ⩽ n ⩽ 109 ) — длительность оригинала фильма без рекламы.
Формат выходных данных Выведите одно целое число — длительность фильма с рекламой. Обратите внимание на то, что значение ответа в этой задаче может превышать возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).
Система оценки Решения, правильно работающие при a, b, n ⩽ 105 , будут оцениваться в 50 баллов.
Примеры стандартный ввод
стандартный вывод
20 5 90
110
30 4 120
132
Замечание В первом примере будут показаны 4 рекламных блока через 20, 40, 60, 80 минут показа фильма. Во втором примере будут показаны 3 рекламных блока через 30, 60, 90 минут показа фильма.
Страница 4 из 6
Школьный этап всероcсийской олимпиады по информатике (программированию) для 7–8 классов. Первая группа регионов Образовательный центр «Сириус», 21 октября 2025
Задача 5. Популярный пост Ограничение по времени:
0.5 секунд
В новом мессенджере «Дружба» разработчики предусмотрели возможность оставить реакцию под сообщением. Каждый пользователь может оставить даже две разные реакции, но больше двух реакций выбрать нельзя. Под некоторым сообщением пользователи оставили a реакций «Согласен», b реакций «Не согласен» и c реакций «Забавно». Какое минимальное количество пользователей могло отреагировать на данное сообщение?
Формат входных данных В первой строке входных данных записано число a, во второй b, в третьей — c из условия задачи (0 ⩽ a, b, c ⩽ 7 · 108 ).
Формат выходных данных Программа должна вывести единственное число: минимально возможное количество пользователей, оставивших реакции под сообщением.
Система оценки Решения, правильно работающие, когда числа a, b, c не превосходят 10, будут оцениваться в 45 баллов.
Пример стандартный ввод 2 1 4
стандартный вывод 4
Замечание В примере из условия два пользователя могли поставить реакции первого и третьего типов, третий пользователь поставил реакцию второго и третьего типов, а четвёртый пользователь — только реакцию третьего типа.
Страница 5 из 6
Школьный этап всероcсийской олимпиады по информатике (программированию) для 7–8 классов. Первая группа регионов Образовательный центр «Сириус», 21 октября 2025
Задача 6. Раскраска стены Ограничение по времени:
1 секунда
Длина кирпича в два раза больше его высоты, то есть его можно представить, как прямоугольник размером 1 × 2 клетки. Стена сложена из n рядов кирпичей, каждый ряд состоит из m клеток. В любом ряду последовательность кирпичей сдвинута на 1 клетку по сравнению с вышележащим и нижележащим. То есть в каждом ряду может быть не более m/2 целых кирпичей, а в концах каждого ряда могут находиться половинки кирпичей. При этом в самом нижнем ряду слева лежит целый кирпич. На картинке приведён пример стены для n = 4 и m = 7.
Вы хотите покрасить кирпичи в минимальное число цветов так, чтобы два соседних кирпича (имеющих общую вертикальную сторону или фрагмент общей горизонтальной стороны) были покрашены в разные цвета, при этом вы хотите использовать минимальное возможное количество цветов.
Формат входных данных В первой строке входных данных записано число n (1 ⩽ n ⩽ 10) — количество рядов кирпичей в стене. Во второй строке записано число m (1 ⩽ m ⩽ 20) — длина каждого ряда кирпичей в клетках.
Формат выходных данных Программа должна вывести n строк, каждая из которых содержит ровно m цифр от 1 до 9 — цвета, в которые покрашены клетки стены. Если две соседние клетки относятся к одному и тому же кирпичу, то они записываются одинаковыми цифрами, в противном случае — различными. Размещение кирпичей в вашей раскраске должно соответствовать условию задачи (на левом конце нижней строки находится целый кирпич). Используйте минимально возможное количество цветов (разрешены любые цифры от 1 до 9, но количество различных использованных цифр должно быть наименьшим возможным для данного размера стены). Не допускаются пробелы и другие символы между цифрами, пробелы в началах и на концах строк, пустые строки в выводе программы.
Примеры стандартный ввод
стандартный вывод
2 4
1223 3311
3 2
66 28 66
Страница 6 из 6
Ответы и решения — показать
Официальные ответы и критерии оценивания жюри. Сначала решите задания самостоятельно.
Школьный этап всероcсийской олимпиады по информатике (программированию) для 7–8 классов. Первая группа регионов Образовательный центр «Сириус», 21 октября 2025
Разбор задач
Задача 1. Прикольные числа
Несложно заметить, что выполнить все критерии невозможно, т.к. если в числе есть цифра 8 и две пары различных цифр, то в числе будут две цифры 8 и тогда сумма цифр не может быть равна 14. Значит, нужно рассмотреть числа, для которых выполнялись бы три критерия из четырёх. Чтобы получить наименьшее число, на первое место поставим цифру 1, на второе — 0. Осталось добавить ещё две цифры, отказавшись от одного правила. Последнее правило сложно выполнить, т.к. в этом случае нам придётся добавить ещё одну цифру 1 и цифру 0, тогда не будут выполнены правила 1 и 2. Откажемся от этого правила, тогда нужно добавить две цифры, одна из которых — 8, а сумма всех цифр равна 14. Значит, ещё одна цифра равна 5. Минимальное подходящее число — 1058. Чтобы получить наибольшее число, на первое место поставим цифру 9. На второе место нельзя поставить ещё одну цифру 9, т.к. тогда перестанут выполняться правила 2 и 3. Поставим на второе место цифру 8. Теперь чтобы выполнить правила 3 и 4 (соседние цифры должны различаться, в числе две пары равных цифр) добавим ещё цифры 9 и 8. Наибольшее подходящее число — 9898.
Задача 2. Собрание сочинений
В последовательности томов 6 2 7 8 4 5 1 9 3 пары томов 7 8 и 4 5 уже стоят рядом, поэтому эти пары не надо разделять и они всегда будут переставляться вместе. Все остальные пары соседних томов нужно будет разделить, и тогда последовательность томов разбивается на фрагменты 6−2−7 8−4 5−1−9−3 Всего 7 фрагментов. Из них можно выбрать три фрагмента, уже идущих по возрастанию номеров томов: 2 − 4 5 − 9 (получится выбрать и другие три фрагмента, но не четыре фрагмента, идущих по возрастанию). Оставшиеся четыре фрагмента необходимо вставить в требуемом порядке между тремя уже упорядоченными фрагментами, для этого понадобятся четыре операции. За три операции задачу решить нельзя. Пример решения (оставим для наглядности знаки «−», но в ответе их быть не должно). 6−2−7 8−4 5−1−9−3 2−7 8−4 5−6−1−9−3 2−4 5−6−7 8−1−9−3 1−2−4 5−6−7 8−9−3 1−2−3−4 5−6−7 8−9
Задача 3. Сигнализация
В данной задаче предлагается реализовать логическую функцию, известную как функция голосования, истинную тогда и только тогда, когда хотя бы два из трёх входных параметров истинны. Для начала можно сформировать условия для отдельных строк таблицы истинности и объединить их через «ИЛИ»: (x and y and z) or (x and y) or (x and z) or (y and z). Такой подход, требующий 8 операций, оценивался в 20 баллов. Дальше можно заметить, что первое слагаемое выражения избыточно — если оно истинно, то истинны и все остальные. Поэтому его можно исключить: (x and y) or (x and z) or (y and z). Такой подход с 5 операциями оценивался в 50 баллов.
Страница 1 из 5
Школьный этап всероcсийской олимпиады по информатике (программированию) для 7–8 классов. Первая группа регионов Образовательный центр «Сириус», 21 октября 2025 Для получения оптимального ответа нужно рассмотреть второе и третье слагаемые и «вынести» из них z: (x and y) or (z and (x or y)). Такой подход требует 4 операций, получая 100 баллов. Можно вынести и другую переменную, например, x или y.
Задача 4. Рекламные паузы
К длине фильма нужно добавить количество рекламных пауз, умноженное на продолжительность одной паузы b. Рекламные паузы вставляются через каждые a минут, поэтому для подсчёта их числа нужно поделить n нацело на a. Но если n делится на a (остаток от деления n на a равен 0), то время показа последней рекламной паузы совпадёт с окончанием фильма, поэтому реклама показываться не будет и число рекламных пауз нужно уменьшить на 1. Возможное решение. a = int ( input ( ) ) b = int ( input ( ) ) n = int ( input ( ) ) n_pauses = n // a i f n % a == 0 : n_pauses −= 1 print ( n + n_pauses ∗ b ) Можно написать решение и без использования if. a = int ( input ( ) ) b = int ( input ( ) ) n = int ( input ( ) ) n_pauses = ( n − 1 ) // a print ( n + n_pauses ∗ b )
Задача 5. Популярный пост
Если какое-то из чисел a, b, c больше суммы двух других, то это число и является ответом: меньшее количество пользователей не могло оставить столько реакций, а если каждый пользователь поставил самую популярную реакцию из трёх и какую-то из двух оставшихся (или поставил одну самую популярную реакцию), то этот вариант будет реализован. Поэтому можно просто вывести наибольшее из трёх чисел. a = int ( input ( ) ) b = int ( input ( ) ) c = int ( input ( ) ) print (max( a , b , c ) ) Такое решение набирает 50 баллов. Рассмотрим теперь случай, когда максимальное из трёх чисел меньше суммы двух других. Необходимо наименьшему количеству пользователей назначить по две или одной реакции, чтобы общее число реакций трёх видов было равно a, b, c. Реализуем «жадный» алгоритм — назначим очередному пользователю две различные реакции, уменьшив на 1 счётчики их количеств. Чтобы последующим пользователям также оставалась возможность выбрать две реакции, необходимо избежать ситуации, когда только одно из чисел a, b, c является ненулевым. то есть выбирать на каждом шаге два наибольших значения из a, b, c. Приведём пример такого решения: входные числа упорядочиваются так, чтобы выполнялось условие a ⩽ b ⩽ c, затем в цикле наибольшие значения c и b уменьшаются на 1, а значение ответа увеличивается на 1, после чего числа опять переупорядочиваются. a = int ( input ( ) ) b = int ( input ( ) ) c = int ( input ( ) ) ans = 0 Страница 2 из 5
Школьный этап всероcсийской олимпиады по информатике (программированию) для 7–8 классов. Первая группа регионов Образовательный центр «Сириус», 21 октября 2025 a , b , c = sorted ( [ a , b , c ] ) while c > 0 : c −= 1 b −= 1 ans += 1 a , b , c = sorted ( [ a , b , c ] ) print ( ans ) Такое решение набирает 50 баллов. Но если объединить эти два решения и выводить max(a, b, c) в случае, когда одно из чисел не меньше суммы двух других, а иначе реализовать «жадный» алгоритм, то решение получит 75 баллов. Теперь избавимся от цикла в «жадном» алгоритме. Поскольку пользователь не мог оставить более двух реакций, то для количества пользователей k выполняется неравенство a+b+c k⩾ , 2 где ⌈x⌉ — значение x, округлённое вверх до целого числа. Наш жадный алгоритм и реализует такую формулу: на каждом шаге, кроме, возможно, последнего, будут уменьшаться два из трёх чисел a, b, c. Таким образом, решение задачи дают формулы: k = max(a,b, c) если одно из чисел не меньше суммы двух других (то есть если 2 max(a, b, c) ⩾ a + b + c) или k a+b+c иначе. Это можно записать 2 и при помощи одной формулы a+b+c k = max a, b, c, . 2 Деление с округлением вверх можно реализовать, например, на языке Python при помощи выражения (a+b+c+1) // 2. Пример такого решения. a = int ( input ( ) ) b = int ( input ( ) ) c = int ( input ( ) ) print (max( a , b , c , ( a+b+c +1) // 2 ) )
Задача 6. Раскраска стены
Для покраски всегда достаточно трёх цветов. Рассмотрим достаточно большой фрагмент стены и попробуем покрасить его в три цвета.
Начнём с целого кирпича в левом нижнем углу. Если три кирпича попарно соприкасаются, то они будут покрашены в разные цвета. Страница 3 из 5
Школьный этап всероcсийской олимпиады по информатике (программированию) для 7–8 классов. Первая группа регионов Образовательный центр «Сириус», 21 октября 2025
Продолжим, покрасив в три цвета два нижних ряда кирпичей.
Остальные ряды будут повторением двух нижних рядов.
Видим, что в нижнем и всех нечётных рядах повторяется последовательность цифр 112233, а во втором и других чётных рядах — та же последовательность, но со сдвигом на 3 цифры. Решение будет таким: создадим строку, повторив последовательность 112233 несколько раз. Для построения нечётных (считая снизу) рядов кирпичей выведем первые m символов этой строки, а в чётных рядах — m символов, но пропустив 3 начальных символа последовательности. Есть ещё один частный случай. При n = 1 для раскраски достаточно двух цветов, т.к. ряд кирпичей всего один. В этом случае нужно образовать строку повторением последовательности 1122. При n = 1, m = 2 нужен только один цвет (т.к. кирпич всего один), но этот случай можно не рассматривать отдельно. Пример правильного решения. Страница 4 из 5
Школьный этап всероcсийской олимпиады по информатике (программированию) для 7–8 классов. Первая группа регионов Образовательный центр «Сириус», 21 октября 2025 n = int ( input ( ) ) m = int ( input ( ) ) if n > 1: s = " 112233 " ∗ 4 else : s = " 1122 " ∗ 5 f o r i in range ( n , 0 , −1): i f i % 2 == 1 : print ( s [ :m] ) else : print ( s [ 3 : 3 + m] )
Страница 5 из 5