e-olymp 8373. Перевернутая башня

Задача

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

prb8373.gif

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

Входные данные

Номер комнаты [latex]n (1\leqslant n \leqslant 2\cdot10^{9})[/latex].

Выходные данные

Выведите два целых числа: номер этажа и номер комнаты на этаже если считать слева.

Тесты

# ВХОДНЫЕ ДАННЫЕ ВЫХОДНЫЕ ДАННЫЕ
1 1 1 1
2 5 3 2
3 35 11 5
4 31 11 1
5 2000000000 1650964 845

Код программы

Решение задачи

Для решения данной задачи я воспользовался циклом while, в котором на каждой итерации, проверял будет ли значение выражения n-rooms_per_floor больше нуля. Если оно было больше нуля, то из n вычиталось количество комнат на текущем этаже, а если меньше нуля, то цикл прерывался. После изменений, выполненных в цикле, переменная n соответствует номеру комнату на этаже, а переменная floor, которая равна количеству вычитаний из n, соответствует этажу, на котором находится комната. К ней в конце необходимо добавить единицу, так как в этой переменной не учитывается «текущий» этаж.

Ссылки

e-olymp 1312. Шкаф

Задача

Размеры шкафа [latex] a \times b \times c [/latex]. Возможно ли его пронести через дверной проём с размерами [latex]x \times y[/latex]? Считается, что шкаф проходит в проем, если размеры, которыми его будут вносить сквозь дверь, не больше соответствующих размеров двери.

Входные данные

Целые числа [latex] a, b, c, x, y (1 ≤ a, b, c, x, y ≤ 100)[/latex].

Выходные данные

Вывести строку «YES«, если шкаф пронести возможно, и «NO» если нельзя.

Тесты

Ввод Вывод
1 4 5 6 10 20 YES
2 4 5 6 3 4 NO
3 12 3 4 5 6 YES
4 12 3 6 5 6 YES
5 12 3 7 5 6 NO

Код программы 

Либо

Без условных операторов

Решение задачи

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

Ссылки

e-olymp 922. Сдвинь элементы

Условие задачи
Задан массив целых чисел длины [latex]n[/latex]. Сдвинуть элементы массива вправо циклически на [latex]1[/latex] шаг.

Входные данные
В первой строке задано количество элементов массива [latex]n[/latex] [latex](n ≤ 100)[/latex]. Во второй строке заданы сами элементы массива, значение каждого из которых по модулю не превышает [latex]100[/latex].

Выходные данные
В одной строке вывести [latex]n[/latex] чисел — новые значения элементов массива.

Continue reading