e-olymp 113. Шарики

Задача

У продавца воздушных шариков есть [latex]n[/latex] шаров. Каждый из них имеет некоторый цвет. Однако совсем недавно Три Толстяка издали указ, разрешающий торговать шариками какого-то одного цвета. Чтобы не нарушать закон, но при этом и не потерять прибыль, продавец решил перекрасить некоторые из своих шариков.

Напишите программу для определения минимального количества перекрашиваний.

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

В первой строке задано количество шаров [latex]n (1\leqslant n \leqslant 100000)[/latex]. Вторая строка состоит из [latex]n[/latex] целых чисел, в пределах от 1 до 9, определяющие цвета шаров (1 — синий, 2 — зеленый, 3 — голубой, 4 — красный, 5 — розовый, 6 — желтый, 7 — серый,8 — черный, 9 — белый).

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

Выведите минимальное количество шариков, которое необходимо перекрасить, чтобы все шарики были одного цвета.

Тесты

# ВХОДНЫЕ ДАННЫЕ ВЫХОДНЫЕ ДАННЫЕ
1 4  3 1 2 1 2
2 1 1 0
3 6 1 1 1 2 2 2 3
4 3 1 2 3 2
5 4 3 3 3 8 1

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

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

Для того, чтобы найти количество шариков, которые необходимо перекрасить, нужно узнать максимальное количество шариков одного цвета и из общего количества шариков n вычесть найденный максимум. Для нахождения максимума считываем номер цвета шара в цикле и увеличиваем соответствующую переменную cl на единицу. По окончанию цикла ищем максимальное количество шаров одного цвета и выводим n-max.

Ссылки

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, соответствует этажу, на котором находится комната. К ней в конце необходимо добавить единицу, так как в этой переменной не учитывается «текущий» этаж.

Ссылки