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

Упражнения

A: Максимум двух чисел

Даны два целых числа. Выведите значение наибольшего из них.
Ввод Вывод
3
7
7
2
2
2

B: Какое число больше?

Даны два целых числа. Программа должна вывести число 1, если первое число больше второго, число 2, если второе больше первого или число 0, если они равны.
Ввод Вывод
4
5
2

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

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

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

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

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

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

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

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

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

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

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

G: Ход ладьи

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

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

H: Ход короля

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

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

I: Ход слона

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

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

J: Ход ферзя

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

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

K: Ход коня

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

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

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

M: Шоколадка

Шоколадка имеет вид прямоугольника, разделенного на n×m долек. Шоколадку можно один раз разломить по прямой на две части. Определите, можно ли таким образом отломить от шоколадки ровно k долек.

Программа получает на вход три числа: n, m, k и должна вывести одно из двух слов: YES или NO.
Ввод Вывод
3
2
4
YES
2
3
1
NO

N: Коровы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

T: Пересадки

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

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

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

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

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

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

V: Коробки

Есть две коробки, первая размером 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

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

На склад, который имеет форму прямоугольного параллелепипеда, привезли ноутбуки, упакованные в коробки. Каждая коробка также имеет форму прямоугольного параллелепипеда. По правилам хранения коробки с ноутбуками должны быть размещены на складе с выполнением следующих двух условий:
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

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

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

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

Вам даны 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

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

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

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

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

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

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

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

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

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

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

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