Условная инструкция

Упражнения

A: Високосный год

Дано натуральное число. Требуется определить, является ли год с данным номером високосным. Если год является високосным, то выведите YES, иначе выведите NO. Напомним, что в соответствии с григорианским календарем, год является високосным, если его номер кратен 4, но не кратен 100, а также если он кратен 400.

Эту задачу нужно решать при помощи логических операций.
Ввод Вывод
2010
NO

B: Максимум трех чисел

Даны три целых числа. Найдите наибольшее из них (программа должна вывести ровно одно целое число).

Какое наименьшее число сравнений (>, <, >=, <=) нужно выполнить, для нахождения наибольшего из трех чисел? Решите задачу с использованием минимального числа сравнений.
Ввод Вывод
10
5
10
10

C: Существует ли треугольник?

Даны три натуральных числа a, b, c. Определите, существует ли треугольник с такими сторонами. Если треугольник существует, выведите строку YES, иначе выведите строку NO.

Треугольник — не должен быть вырожденным, то есть вершины треугольника не лежат на одной прямой.
Ввод Вывод
5
3
2
NO

D: Сколько совпадает чисел

Даны три целых числа. Определите, сколько среди них совпадающих. Программа должна вывести одно из чисел: 3 (если все совпадают), 2 (если два совпадает) или 0 (если все числа различны).
Ввод Вывод
10
5
10
2

E: Ход короля

Шахматый король ходит на одну соседнюю по стороне или по углу клетку. Даны две различные клетки шахматной доски, определите, может ли король попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки. Программа должна вывести YES, если из первой клетки ходом короля можно попасть во вторую или NO в противном случае.

Для простоты можно не рассматривать случай, когда данные клетки совпадают.
Ввод Вывод
1
1
2
2
YES
1
1
3
3
NO

F: Ход ферзя

Решите аналогичную задачу для ферзя, который ходит как ладья и слон (то есть по горизонтали, вертикали или диагонали).

Для простоты можно не рассматривать случай, когда данные клетки совпадают.
Ввод Вывод
1
1
8
8
YES
1
1
2
3
NO

G: Ход коня

Решите аналогичную задачу для коня, который ходит буквой “Г” — на две клетки по вертикали в любом направлении и на одну клетку по горизонтали, или наоборот.
Ввод Вывод
1
1
2
3
YES
1
1
3
3
NO

H: Шахматная доска

Заданы две клетки шахматной доски. Если они покрашены в один цвет, то выведите слово YES, а если в разные цвета – то NO.
Ввод Вывод
1
1
8
8
YES
1
1
1
8
NO

I: Коровы

Для данного числа n<100 закончите фразу “На лугу пасется...” одним из возможных продолжений: “n коров”, “n корова”, “n коровы”, правильно склоняя слово “корова”. Программа должна вывести введенное число n и одно из слов: korov, korova или korovy. Между числом и словом должен стоять ровно один пробел.
Ввод Вывод
1
1 korova
2
2 korovy
5
5 korov

J: Тип треугольника

Даны три стороны треугольника a, b, c. Определите тип треугольника с заданными сторонами. Выведите одно из четырех слов: rectangular для прямоугольного треугольника, acute для остроугольного треугольника, obtuse для тупоугольного треугольника или impossible, если треугольника с такими сторонами не существует.
Ввод Вывод
1
1
1
acute
3
4
5
rectangular

K: Билеты на метро — 1

Давным-давно билет на одну поездку в метро стоил 15 рубля, билет на 10 поездок стоил 125 рублей, билет на 60 поездок стоил 440 рублей. Пассажир планирует совершить n поездок. Определите, сколько билетов каждого вида он должен приобрести, чтобы суммарное количество оплаченных поездок было не меньше n, а общая стоимость приобретенных билетов — минимальна.

Программа получает на вход одно число n и должна вывести три целых числа, равных необходимому количеству билетов на 1, на 10, на 60 поездок.
Ввод Вывод
85
5 2 1
19
0 2 0

L: Билеты на метро — 2

Решите предыдущую задачу при наличии следующих билетов: 1 поездка — 15 рублей, 5 поездок — 70 рублей, 10 поездок — 125 рублей, 20 поездок — 230 рублей, 60 поездок — 440 рублей.

Программа получает на вход одно число n и должна вывести пять целых чисел: количество билетов на 1, 5, 10, 20, 60 поездок, которое необходимо приобрести. Если для какого-то данного n существует несколько способов приобретения билетов одинаковой суммарной стоимости, необходимо вывести ту комбинацию билетов, которая дает большее число поездок.

M: Упорядочить три числа

Дано три числа. Упорядочите их в порядке неубывания. Программа должна считывать три числа a, b, c, затем программа должна менять их значения так, чтобы стали выполнены условия \(a\le b \le c\), затем программа выводит тройку a, b, c.

Дополнительные ограничения: нельзя использовать дополнительные переменные, обмен значений двух переменных нужно делать при помощи функции swap (то есть единственной допустимой операцией присваивания является обмен значений swap(a, b)).

Какое наименьшее число сравнений необходимо для решения этой задачи? Почему нельзя обойтись меньшим числом сравнений?
Ввод Вывод
1
2
1
1 1 2

N: Яша плавает в бассейне

Яша плавал в бассейне размером \(N\times M\) метров и устал. В этот момент он обнаружил, что находится на расстоянии x метров от одного из длинных бортиков (не обязательно от ближайшего) и y метров от одного из коротких бортиков. Какое минимальное расстояние должен проплыть Яша, чтобы выбраться из бассейна на бортик?

Программа получает на вход числа \(N\), \(M\), \(x\), \(y\). Программа должна вывести число метров, которое нужно проплыть Яше до бортика.
Ввод Вывод
10
25
7
8
3

O: Пересадки

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

Вводятся четыре числа – номера конечных остановок сначала первого, потом второго автобуса.

Ваша программа должна выводить одно число – искомое количество остановок.
Ввод Вывод
3
6
4
2
2
3
1
5
10
0

P: Узник замка Иф

За многие годы заточения узник замка Иф проделал в стене прямоугольное отверстие размером D×E. Замок Иф сложен из кирпичей, размером A×B×C. Определите, сможет ли узник выбрасывать кирпичи в море через это отверстие, если стороны кирпича должны быть параллельны сторонам отверстия.

Программа получает на вход числа A, B, C, D, E и должна вывести слово YES или NO.
Ввод Вывод
2
1
3
2
2
YES
1
2
3
1
1
NO

Q: Коробки

Есть две коробки, первая размером A1×B1×C1, вторая размером A2×B2×C2. Определите, можно ли разместить одну из этих коробок внутри другой, при условии, что поворачивать коробки можно только на 90 градусов вокруг ребер.

Программа получает на вход числа A1, B1, C1, A2, B2, C2. Программа должна вывести одну из следующих строчек:
Boxes are equal, если коробки одинаковые,
The first box is smaller than the second one, если первая коробка может быть положена во вторую,
The first box is larger than the second one, если вторая коробка может быть положена в первую,
Boxes are incomparable, во всех остальных случаях.
Ввод Вывод
1
2
3
3
2
1
Boxes are equal
3
4
5
2
4
6
Boxes are incomparable

R: Складирование ноутбуков

На склад, который имеет форму прямоугольного параллелепипеда, привезли ноутбуки, упакованные в коробки. Каждая коробка также имеет форму прямоугольного параллелепипеда. По правилам хранения коробки с ноутбуками должны быть размещены на складе с выполнением следующих двух условий:
1. Стороны коробок должны быть параллельны сторонам склада.
2. Коробку при помещении на склад разрешается расположить где угодно (с выполнением предыдущего условия), в том числе на другой коробке, но все коробки должны быть ориентированы одинаково (т.е. нельзя одну коробку расположить “стоя”, а другую —“лежа”)

Напишите программу, которая по размерам склада и размерам коробки с ноутбуком определит максимальное количество ноутбуков, которое может быть размещено на складе. Программа получает на вход шесть натуральных чисел. Первые три задают длину, высоту и ширину склада. Следующие три задают соответственно длину, высоту и ширину коробки с ноутбуком. Программа должна вывести одно число — максимальное количество ноутбуков, которое может быть размещено на складе.
Ввод Вывод
100
200
300
1
2
3
1000000
100
200
300
3
2
1
1000000
100
100
1
2
2
2
0
7
7
7
3
3
3
8

S: Два прямоугольника

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

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

Вам даны 8 целых чисел — \(x_1\), \(y_1\), \(x_2\), \(y_2\), \(x_3\), \(y_3\), \(x_4\), \(y_4\), где \((x_1, y_1)\) — координаты левого нижнего угла рисунка Пети, \((x_2, y_2)\) — координаты правого верхнего угла рисунка. Аналогично, \((x_3, y_3)\) — координаты левого нижнего угла вырезанного Васей прямоугольника, \((x_4, y_4)\) — координаты правого верхнего угла вырезанного прямоугольника. Гарантируется, что данные прямоугольники невырождены (\(x_1 \lt x_2\), \(y_1 \lt y_2\) и аналогичные неравенства для второго набора координат).

Выведите YES, если Вася испортил рисунок, и NO в противном случае.

Тесты к этой задаче закрытые.
Ввод Вывод
1
1
2
2
3
3
4
4
NO
1
1
3
3
2
2
4
4
YES
1
1
4
4
2
2
3
3
YES

T: Расстановка ноутбуков

В школе решили на один прямоугольный стол поставить два прямоугольных ноутбука.

Ноутбуки нужно поставить так, чтобы их стороны были параллельны сторонам стола.

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

Вводится четыре натуральных числа, первые два задают размеры одного ноутбука, а следующие два — размеры второго. Числа не превышают 1000.

Выведите два числа — размеры стола. Если возможно несколько ответов, выведите любой из них (но только один).

Тесты к этой задаче закрытые.
Ввод Вывод
10
2
2
10
10 4
5
7
3
2
5 9

U: Римские числа

Дано натуральное число \(N\) от 1 до 3999. Выведите его запись римскими цифрами.
Ввод Вывод
179
CLXXIX

Hint для облегчения вывода. Если нужно вывести подряд n одинаковых символов (n — переменная типа int), например, n символов X это можно сделать следующей инструкцией:

cout << string(n, 'X');

V: Котлеты

На сковородку одновременно можно положить \(k\) котлет. Каждую котлету нужно с каждой стороны обжаривать \(m\) минут непрерывно. За какое наименьшее время удастся поджарить с обеих сторон \(n\) котлет?

Программа получает на вход три числа: \(k\), \(m\) и \(n\) и должна вывести одно число: наименьшее количество минут.

Тесты к этой задаче закрытые.
Ввод Вывод
1
1
1
2
2
2
1
4

W: Аншлаг, аншлаг!

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

Вася, ярый любитель кино и столь же ярый ненавистник математики, первым купил билет на очередную премьеру. Когда Вася вошёл в зал и сел на своё место, он увидел, что все остальные кресла в его ряду ещё пустуют. Вася точно знал, что к началу сеанса зал заполнится до отказа, а это значило, что с минуты на минуту о его ноги начнут спотыкаться другие кинолюбители, пробирающиеся к своим местам. Несмотря на всю свою нелюбовь к математике, Вася мгновенно оценил, какое максимальное количество человек может спотнуться о его ноги, прежде чем все зрители займут свои места. А вы сможете?

Программа получает на вход два целые числа n и k — количество мест в том ряду, где сидит Вася, и номер его места соответственно (1≤k≤n≤50, n — чётно). Места в ряду нумеруются с единицы.

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

Тесты к этой задаче закрытые.
Ввод Вывод
4
1
1

X: Настольный теннис

Вася, Петя и Коля играли в теннис навылет (проигравший пропускал следующую партию, уступая свое место третьему). Вася утверждает, что сыграл x партий, Петя — что сыграл y партий, Коля — z партий.

Определите, могло ли такое быть.

Программа получает на вход целых неотрицательных числа x, y, z и должна вывести YES, если такое могло быть, и NO в противном случае.

Тесты к этой задаче закрытые.
Ввод Вывод
3
1
2
YES
1
1
1
NO