Loading [MathJax]/extensions/tex2jax.js

Упражнения

A: Лифт

В торговом центре этажи нумеруются так: \(\ldots, -3, -2, -1, 1, 2, 3, \ldots\) (то есть нет нулевого этажа). Вася спустился на лифте с этажа с номером \(A\) на \(B\) этажей, а затем поднялся на лифте на \(C\) этажей. Определите, на каком этаже он оказался.

Программа получает на вход три целых числа: в первой строке записано число \(A\), во второй — \(B\), в третьей — \(C\). Число \(A\) не равно нулю и не превосходит по модулю 100, числа \(B\) и \(C\) — положительные и не превосходят 100.

Программа должна вывести одно целое число — номер этажа, на котором оказался Вася.
Ввод Вывод
5
2
10
13
3
10
1
-7

B: Надёжное крепление

Уличный рекламный щит прикреплён к опоре при помощи трёх креплений. Первое крепление может выдерживать ветер, скорость которого не превосходит \(A\) м/c, второе крепление — \(B\) м/c, третье — \(C\) м/с. Сам щит будет надёжно закреплён, если как минимум два крепления из трёх выдерживают ветер данной скорости. Определите максимальную скорость ветра, которую выдержит данный щит.

Программа получает на вход три целых положительных числа \(A\), \(B\), \(C\), не превосходящие \(2\times10^9\), — допустимые скорости ветра, которые выдерживают три крепления щита.

Программа должна вывести одно число — максимальную скорость ветра, которую выдержит щит.
Ввод Вывод
28
15
10
15

C: Плот

Посередине озера плавает плот, имеющий форму прямоугольника. Стороны плота направлены вдоль параллелей и меридианов. Введём систему координат, в которой ось \(OX\) направлена на восток, а ось \(OY\) — на север. Пусть юго-западный угол плота имеет координаты \((x_1, y_1)\), северо-восточный угол — координаты \((x_2, y_2)\).

Пловец находится в точке с координатами \((x, y)\). Определите, к какой стороне плота (северной, южной, западной или восточной) или к какому углу плота (северо-западному, северо-восточному, юго-западному, юго-восточному) пловцу нужно плыть, чтобы как можно скорее добраться до плота.

Программа получает на вход шесть чисел в следующем порядке: \(x_1\), \(y_1\) (координаты юго-западного угла плота), \(x_2\), \(y_2\) (координаты северо-восточного угла плота), \(x\), \(y\) (координаты пловца). Все числа целые и по модулю не превосходят 100. Гарантируется, что \(x_1 \lt x_2\), \(y_1 \lt y_2\), \(x \ne x_1\), \(x \ne x_2\), \(y \ne y_1\), \(y \ne y_2\), координаты пловца находятся вне плота.

Если пловцу следует плыть к северной стороне плота, программа должна вывести символ «N», к южной — символ «S», к западной — символ «W», к восточной — символ «E». Если пловцу следует плыть к углу плота, нужно вывести одну из следующих строк: «NW», «NE», «SW», «SE».
Ввод Вывод
-1
-2
5
3
-4
6
NW

D: Пирожные

На складе кондитерской фабрики хранятся пирожные двух видов — круассаны и эклеры. Круассанов \(A\) штук, а эклеров — \(B\) штук. Есть неограниченный запас подарочных коробок, в каждую коробку можно положить только три пирожных. При этом требуется, чтобы в коробке были пирожные обоих видов, то есть в одну коробку можно положить два круассана и один эклер или один круассан и два эклера.

Определите, можно ли упаковать все имеющиеся пирожные в коробки и выведите подходящий способ размещения пирожных по коробкам. Программа получает на вход два целых числа \(A\) и \(B\), \(1\le A\le 10^9\), \(1\le B\le 10^9\).

Если можно разложить все пирожные по коробкам в соответствии с условием задачи, программа должна вывести два целых числа. Первое число равно количеству коробок, в которых лежит два круассана и один эклер. Второе число равно количеству коробок, в которых лежит один круассан и два эклера.

Если разложить все пирожные по коробкам нужным способом нельзя, программа должна вывести одно число \(-1\).
Ввод Вывод
4
5
1 2
5
3
-1

E: Манхэттен

Кварталы Манхэттена состоят из авеню, направленных с юга на север и улиц, направленных с запада на восток. Все улицы и авеню пронумерованы числами, начиная с 1 подряд (первая улица, вторая улица, третья улица и т. д.). Передвигаться можно только по улицами или по авеню.

Миша впервые попал на Манхэттен. Сейчас он стоит на пересечении авеню номер \(x_1\) и улицы номер \(y_1\). Ему нужно попасть на перекресток авеню номер \(x_2\) и улицы номер \(y_2\). Определите маршрут, который он должен пройти.

Программа получает на вход 4 числа: \(x_1\), \(y_1\), \(x_2\), \(y_2\), записанных в отдельных строках. Все числа — натуральные, не превышают \(10^3\). Начальное и конечное расположение Миши не совпадают.

Программа должна вывести последовательность из латинских заглавных букв, описывающих маршрут, которому должен следовать Миша. Буква «N» обозначает перемещение на один квартал на север, «S» — на юг, «W» — на запад, «E» — на восток. Программа должна вывести самый короткий из всех возможных маршрутов, если же кратчайших маршрутов существует несколько, то программа должна вывести любой из них (но только один).
Ввод Вывод
1
3
4
1
ESESE

F: Парад

В параде принимают участие \(M\) военных. Командование парада решило, что наиболее эффектное построение военных — в форме квадрата, то есть число участников построения должно быть точным квадратом. Но поскольку число \(M\) может не быть точным квадратом, разрешается разбить военных на несколько полков, каждый из которых строится в форме квадрата. Для красоты все полки должны быть одинакового размера, также командование парада хочет, чтобы размер каждого полка был как можно больше. Определите максимально возможный размер полка.

Программа получает на вход одно целое положительное число \(M\), не превосходящее \(2\times 10^9\), — количество участников парада. Программа должна вывести одно число — максимально возможный размер полка.
Ввод Вывод
180
36

G: Пакуем чемоданы!

Алёна собирает вещи в отпуск. С собой в самолёт она может взять ручную кладь и багаж. Для ручной клади у Алёны есть рюкзак, а для багажа — огромный чемодан.

По правилам перевозки масса ручной клади не должна превосходить \(S\) кг, а багаж может быть любой массы (за сверхнормативный багаж Алёна готова доплатить). Разумеется, наиболее ценные вещи — ноутбук, фотоаппарат, документы и т. д. — Алёна хочет положить в ручную кладь.

Алёна разложила все свои вещи в порядке уменьшения их ценности и начинает складывать наиболее ценные вещи в рюкзак. Она действует следующим образом — берёт самый ценный предмет, и если его масса не превосходит \(S\), то кладёт его в рюкзак, иначе кладёт его в чемодан. Затем она берёт следующий по ценности предмет, если его можно положить в рюкзак, то есть если его масса вместе с массой уже положенных в рюкзак вещей не превосходит \(S\), то кладёт его в рюкзак, иначе в чемодан, и таким же образом процесс продолжается для всех предметов в порядке убывания их ценности.

Определите вес рюкзака и чемодана после того, как Алёна сложит все вещи.

Первая строка входных данных содержит число \(S\) — максимально разрешённый вес рюкзака. Во второй строке входных данных записано число \(N\) — количество предметов. В следующих \(N\) строках даны массы предметов, сами предметы перечислены в порядке убывания ценности (сначала указана масса самого ценного предмета, затем масса второго по ценности предмета и т. д.). Все числа натуральные, число \(S\) не превосходит \(2\times 10^9\), сумма весов всех предметов также не превосходит \(2\times 10^9\). Значение \(N\) не превосходит \(10^5\).

Программа должна вывести два числа — вес рюкзака и вес чемодана (вес пустого рюкзака и чемодана не учитывается).
Ввод Вывод
20
5
6
10
5
2
3
18 8

H: Ряд чисел

Легенда гласит, что Карл Фридрих Гаусс, учась в школе, смог быстро посчитать сумму целых чисел от 1 до 100, заметив, что \(1 + 100 = 2 + 99 = \ldots = 50 + 51\). Теперь решите задачу посложнее: можно ли перед каждым из чисел от 1 до \(N\) расставить знаки «+» или «–» так, чтобы сумма получившихся чисел была равна 0? Например, для \(N = 3\) сумма \(-1-2 +3\) будет равна 0, а для \(N = 2\) этого сделать нельзя.

Программа получает на вход целое неотрицательное число \(N\), не превосходящее \(10^5\). Программа должна вывести последовательность из \(N\) символов «+» или «−», соответствующих знакам, которые нужно расставить перед числами от 1 до \(N\) так, чтобы сумма получившихся чисел была равна 0. Если задача имеет несколько решений, нужно вывести один (лобой) ответ. Если задача не имеет решения для данного \(N\), нужно вывести одно слово «IMPOSSIBLE».
Ввод Вывод
3
--+
2
IMPOSSIBLE

I: Расписание кружка

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

Программа получает на вход два числа, записанных в разных строках: номер месяца и номер дня месяца, когда проходит первое занятие. Номер месяца может быть одним из четырёх возможных чисел — 9, 10, 11, 12. Номер дня месяца — число от 1 до 30 для сентября и ноября (месяцы с номерами 9 и 11) или от 1 до 31 для октября и декабря (месяцы с номерами 10 и 12).

Программа должна вывести даты всех занятий кружка до конца года в хронологическом порядке, по одной дате в строке, сначала месяц, затем день месяца, через пробел. Занятия проходят еженедельно, в тот же день недели, что и первое занятие. Формат вывода дат такой же, как в условии. Считайте, что каникулы отсутствуют, а последнее занятие может происходить в любой день декабря, в том числе и 31 числа.
Ввод Вывод
11
20
11 20
11 27
12 4
12 11
12 18
12 25

J: Уточки

Как известно, при разработке и отладке программ большую помощь могут оказать игрушечные жёлтые уточки (см. статью «Метод утёнка» в википедии), поэтому Денис собрал большую коллекцию жёлтых уточек. Коллекция уже настолько большая, что Денис решил расставить уточек на полки шкафа. Сначала он начал ставить на каждую полку по \(A\) уточек, но одна уточка оказалась лишней. Тогда он заново начал расставлять уточек на полки, ставя на каждую полку по \(B\) уточек, но в этом случае ему не хватило одной уточки, чтобы на каждой полке оказалось ровно \(B\) уточек. Определите минимальное число уточек, которое могло быть в коллекции Дениса.

Программа получает на вход два целых положительных числа \(A\) и \(B\), \(2 \le A \le 2\times 10^9\), \(2 \le B \le 2\times 10^9\) — количество уточек при расстановке на полке в первом и во втором случаях. Программа должна вывести одно число — минимально возможное количество уточек в коллекции Дениса. Гарантируется, что ответ существует и не превосходит \(2\times 10^9\).
Ввод Вывод
5
3
11

K: Пульт управления

Телевизор показывает \(N\) каналов, пронумерованных числами от \(1\) до \(N\). Переключать каналы можно с помощью двух кнопок на пульте: «\(+\)» и «\(-\)».

Короткое нажатие на кнопку «\(+\)» приведёт к переключению на следующий канал, если номер текущего канала меньше \(N\); если же номер текущего канала равен \(N\), то телевизор продолжит показывать этот канал. Если кнопку «\(+\))» нажать и удерживать некоторое время, произойдёт переход на \(K\)) каналов вперёд, при условии, что номер текущего канала не превосходит \(N - K\)). В противном случае произойдёт переход на канал \(N\).

Аналогично, короткое нажатие на кнопку «\(-\)» приведёт к переключению на предыдущий канал, если номер текущего канала больше \(1\); если же номер текущего канала равен \(1\), телевизор продолжит показывать этот канал. Если кнопку «\(-\)» нажать и удерживать некоторое время, то произойдёт переход на \(K\) каналов назад при условии, что номер текущего канала превышает \(K\). В противном случае произойдёт переход на канал \(1\).

Телевизор показывает канал \(P\). Определите, какое минимальное количество нажатий на кнопки пульта потребуется сделать, чтобы переключиться на канал \(U\).

В первой строке содержится целое число \(N\) (\(3 \le N \le 10^9\)) — количество телевизионных каналов.

Во второй строке содержится целое число \(K\) (\(2 \le K < N\)) — количество каналов, на которое осуществится переход назад или вперёд при удерживании соответствующей кнопки переключения.

В третьей строке содержится целое число \(P\) (\(1 \le P \le N\)) — номер канала, который показывает телевизор.

В четвёртой строке содержится целое число \(U\) (\(1 \le U \le N\)) — номер канала, на который нужно переключиться.

Гарантируется, что \(P \not= U\).

Выведите одно целое число — минимальное количество нажатий на кнопки пульта, которое необходимо для переключения с канала \(P\) на канал \(U\).

Ввод Вывод Пояснение
20
5
3
19
4

Сначала следует выполнить одно короткое нажатие на кнопку «\(+\)» и переключиться с канала \(3\) на канал \(4\), а затем трижды осуществить переход вперёд на \(5\) каналов: сначала переключиться с \(4\) на \(9\), затем с \(9\) на \(14\) и, наконец, с \(14\) на \(19\) канал.

20
5
3
17
4

Сначала можно переключиться коротким нажатием на кнопку «\(-\)» на канал \(2\), после чего выполнить три перехода вперёд на \(5\) каналов: с канала \(2\) на канал \(7\), затем на канал \(12\) и, наконец, на канал \(17\).

20
5
14
12
2

Необходимо дважды выполнить короткое нажатие кнопки «\(-\)».

20
5
3
16
4

Нужно сначала перейти назад, на канал \(1\), после чего трижды выполнить переход вперёд, последовательно на каналы \(6\), \(11\), \(16\).

L: Заявления

У чиновника есть стопка из \(N\) заявлений, пронумерованных сверху вниз от \(1\) до \(N\).

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

Определите, будет ли заявление с номером \(K\) подписано или выброшено, а также номер шага, на котором это произойдёт. Одним шагом является каждая из трёх операций, описанных выше.

Первая строка входных данных содержит целое число \(N\), вторая строка — целое число \(K\) (\(1 \le N \le 10^9\), \(1 \le K \le N\)).

В первой строке выведите «Yes», если заявление с номером \(K\) будет подписано, и «No», если оно будет выброшено.

Во второй строке выведите номер шага, на котором это произойдёт.

Ввод Вывод
4
3
No
5
5
3
Yes
7

Пояснение. В первом примере из условия в стопке находятся 4 заявления: (1, 2, 3, 4). Заявление 1 подписывается, заявление 2 выкидывается, заявление 3 перекладывается в конец. После выполнения трёх шагов в стопке будут заявления (4, 3). Поэтому на пятом шаге заявление 3 будет выброшено.

Во втором примере из условия стопка имеет вид (1, 2, 3, 4, 5). После выполнения трёх шагов стопка будет иметь вид (4, 5, 3). За следующие три шага заявление 4 будет подписано, заявление 5 будет выброшено, а заявление 3 — переложено в конец стопки (в которой ничего не будет, кроме заявления 3). Поэтому после шести шагов стопка будет иметь вид (3). На седьмом шаге заявление 3 будет подписано.

`