Задание №168136: Задание 2
2 Замечание В примере из условия Пете следует выйти из дома в 3-ю минуту. Количество осадков, которое выпадет за время его нахождения на улице, составит 1 + 4 + 2 + 1 = 8. В 7-ю он совершит покупку, после чего, начиная с минуты #8, он может отправиться обратно. Наилучшим решением для него будет подождать до 13-й минуты: если он выйдет из пекарни в этот момент, то количество осадков, которое выпадет за время его нахождения на улице, составит 3 + 1 + 2 + 1 = 7. Суммарное количество осадков будет равно 15. Можно проверить, что в других случаях количество осадков будет больше. Страница 6 из 6
Что проверяет это задание
Задание относится к теме «Задание 2» и рассчитано на уровень 8 класса. Для решения понадобятся:
- анализ условия
- пошаговое рассуждение
- проверка результата
Источник: ВсОШ в Москве — официальный архив · 2025
Качество материала
Показываем, из чего состоит страница и можно ли проверить материал по первоисточнику.
Последняя проверка решения:
Происхождение задания
- Банк заданий
- ВсОШ в Москве — официальный архив
- Организатор
- Редакция «Я сам решу»
- Год материала
- 2025
- Материалы
- 2 файла
Связанные понятия
План самостоятельного решения
- Перепишите известные данные и отдельно сформулируйте, что требуется найти или доказать.
- Свяжите условие с темой «Задание 2» и выберите подходящее правило, формулу или способ рассуждения.
- Запишите промежуточные шаги: это помогает заметить потерянный знак, случай или логический переход.
- Сверьте результат со всеми ограничениями условия и только затем откройте подробный разбор.
Ориентировочное время: 15 минут.
Закрепить тему
После разбора попробуйте решить ещё десять заданий по предмету «Искусственный интеллект». Вариант формируется заново, а ответы можно сразу проверить.
Решение по шагам
Задача 2. Политическая борьба
Рассмотрим решение для частного случая a < b и c = 0 (делегаты только двух партий, против-
ников больше, чем сторонников).
Если делегата первой партии поселить с двумя делегатами другой партии, то его переманят оп-
поненты. Если же двух делегатов первой партии поселить с делегатом второй партии, то количество
членов первой партии увеличится на 1. Поэтому делегатов первой партии нужно селить парами, до-
бавляя к ним по одному делегату второй партии. Если a чётное, то делегаты первой партии смогут
привлечь a=2 новых сторонников.
Если a нечётное, то один делегат первой партии перейдёт во вторую партию, если его поселить
одного. Этого можно избежать, если трёх делегатов первой партии поселить в один номер, но тогда
два других делегата не смогут привлечь одного нового сторонника. Можно поступить любым спосо-
бом, результат будет одинаковым. Количество переманенных делегатов второй партии будет равно
(a (cid:0) 3)=2.
Пример решения для этого случая.
a = int (input ())
b = int (input ())
c = int (input ())
n = (a + b + c) // 3
if a % 2 == 0:
print (a + a // 2)
else :
print (a + (a − 3) // 2)
Заметим, что это решение работает и в случае a = 1, тогда ответ равен 0.
Теперь рассмотрим полное решение. Определим количество комнат n = a+b+c. Если a не меньше
3
2n, то в каждый номер можно поселить не менее двух делегатов первой партии, тогда наутро все
делегаты станут членами первой партии. Ответ в этом случае 3n.
Иначе будем селить делегатов первой партии по двое, чтобы каждые два делегата первой партии
переманили одного делегата другой партии. Тогда количество переманенных делегатов будет равно
a // 2 (целочисленное деление a на 2).
Если a нечётное, то одного делегата первой партии придётся поселить в номер с оппонентами.
Переманивания этого делегата удастся избежать, если его поселить с представителями разных пар-
тий, что возможно, если b > 0 и c > 0. Если же a нечётно, и хотя бы одно из чисел b или c равно 0,
то этого делегата сохранить не удастся — ответ будет меньше на 1 (как и ранее, его можно поселить
в номер с двумя делегатами своей партии, но это тоже приведёт к уменьшению ответа на 1, так как
уменьшится число переманенных членов других партий).
Пример решения для общего случая.
a = int (input ())
Страница 1 из 5
Пригласительный этап всероcсийской олимпиады по информатике для 8–10 классов
29-30 мая 2025
b = int (input ())
c = int (input ())
n = (a + b + c) // 3
if a >= 2 ∗ n:
print (3 ∗ n)
elif a % 2 == 1 and (b == 0 or c == 0):
print (a + a // 2 − 1)
else :
print (a + a // 2)
Используемые формулы
Рассмотрим решение для частного случая a < b и c = 0 (делегаты только двух партий, против-привлечь a=2 новых сторонников.(a (cid:0) 3)=2.a = int (input ())b = int (input ())c = int (input ())
Самопроверка после решения
- Я использовал все данные из условия и не добавил неподтверждённых предположений.
- Каждый переход в рассуждении объяснён правилом, формулой или ранее доказанным фактом.
- Ответ соответствует вопросу, а обозначения и единицы измерения записаны однозначно.
- Я сравнил свой ход решения с разбором и понял причину каждого отличия.
Типичные ошибки
- Пропустить часть условия.
- Сделать вывод без проверки промежуточного шага.
- Записать только ответ без объяснения.