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

Упражнения

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

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

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

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

Эту задачу желательно решить с использованием инструкций if... elif... else.

C: Считалка

Три ребёнка выбирают водящего при помощи считалки. Определите, на ком из них закончится считалка, если в считалке \(N\) слов.

В первых трёх строках записаны имена трёх школьников, а затем записано целое положительное число \(N\). Программа должна вывести одно из этих трёх имён, в зависимости от значения \(N\).
Ввод Вывод
Alice
Bob
Charly
5
Bob

Эту задачу желательно решить с использованием инструкций if... elif... else.

D: Кружочки

Дана цифра (то есть однозначное число). Определите, сколько «кружочков» в изображении этой цифры.

Ввод Вывод
0
1
4
0

E: Точный квадрат

Дано целое неотрицательное число. Если оно является квадратом целого числа, выведите YES, иначе выведите NO.

Указание. Извлеките корень из этого числа. Приведите результат к типу int, возведите в квадрат и сравните с данным числом.

Ввод Вывод
4
YES
3
NO

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

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

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

G: Ход ладьи

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

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

H: Ход слона

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

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

I: Ход ферзя

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

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

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

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

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

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

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

L: Ход короля

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

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

Решения, перебирающие все восемь соседних клеток при помощи семи операций or, приниматься не будут.
Ввод Вывод
1
1
2
2
YES
1
1
3
3
NO

M: Ход коня

Решите аналогичную задачу для коня, который ходит буквой “Г” — на две клетки по вертикали в любом направлении и на одну клетку по горизонтали, или наоборот.
Ввод Вывод
1
1
2
3
YES
1
1
3
3
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: Упорядочить три числа

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

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

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

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

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

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

S: Коробки

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

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

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

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

U: Пересадки

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

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

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

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

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

Определите площадь закрашенной Петей области на том куске, который вырезал Вася.

Программа получает на вход 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\) и аналогичные неравенства для второго набора координат).

Программа должна вывести одно число — площадь закрашенной области на прямоугольном вырезанном куске.
Ввод Вывод
1
1
2
2
3
3
4
4
0
1
1
3
3
2
2
4
4
1
1
1
4
4
2
2
4
5
4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ZB: Котлеты

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

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

ZC: Фотография

Фотографа делает групповую фотографию детей. Он размещает детей не более чем в четыре ряда. Девочек он располагает либо во втором ряду, сидящими на стульчиках, либо стоящими в третьем ряду. Мальчиков он размещает либо в первом ряду, сидящими на корточках, либо в четвёртом ряду, стоящими на стульчиках.

Фотограф хочет разместить детей так, чтобы количество детей в самом длинном ряду было как можно меньше. Группа состоит из \(a\) мальчиков и \(b\) девочек. В студии есть стулья в количестве \(c\) штук. Какие-то ряды могут быть пустыми. Все стулья использовать не обязательно.

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

Программа получает на вход три целых неотрицательных числа \(a\), \(b\) и \(c\), записанных в отдельных строках — количество мальчиков, девочек и стульев соответственно. Все числа не превосходят \(10^{18}\).

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

Ввод Вывод Пояснение
9
15
0
15

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

9
15
4
11

Во втором примере есть 4 стула. Можно посадить 4 девочек во втором ряду на эти стулья, остальные 11 девочек будут стоять в третьем ряду. Все мальчики будут сидеть на корточках в первом ряду. Общая ширина группы 11.

9
15
7
9

В третьем примере есть 7 стульев. Тогда есть два способа получить группу ширины 9. Например, можно посадить на все стулья девочек, тогда в первом ряду будет 9 мальчиков, во втором ряду будет 7 девочек, в третьем ряду 8 девочек. Либо можно посадить на стулья 6 девочек и поставить одного мальчика в четвёртый ряд. Тогда получим 8 мальчиков в первом ряду, 6 девочек во втором, 9 девочек в третьем и 1 мальчика в четвёртом. В любом из этих двух случаев ширина группы равна 9.

9
15
1000
8

В четвёртом примере стульев много и есть несколько способов организовать группу ширины 8. Один из способов такой: посадим на корточки 4 мальчика в первом ряду, далее посадим 8 девочек на стулья во втором ряду, оставшиеся 7 девочек встанут в третьем и 5 мальчиков поставим на стульчики в четвёртом.

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

Телевизор показывает \(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 \lt N)\) — количество каналов, на которое осуществится переход назад или вперёд при удерживании соответствующей кнопки переключения.

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

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

Гарантируется, что \(P\ne 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.

Замечания по предыдущему листку

Обмен значений двух переменных в языке Питон легко делается так:

(a, b) = (b, a)

Здесь в круглых скобках записан кортеж — последовательность из нескольких элементов. Одному кортежу можно присвоить значение другого кортежа. Этим можно пользоваться, если нужно одновременно изменить несколько переменных, например, возможна такая запись:

(x, y, z) = (x + y, y + z, z + x)

В задаче “автопробег” необходимо было найти целочисленное частное от деления m на n с округлением вверх. Обычно это делается на основе известного математического факта: (m + n - 1) // n.