====%%(wacko wrapper=text wrapper_align=center) Использование списков, стеков и очередей. %%==

----
**В задачах этого листка:**

  * **Рекурсия !!запрещена!!.**
  * **Время выполнения программы по умолчанию !!не более!! //C""""vvnvv""""//.**


**1.**
Написать программу, выводящую по возрастанию до заданной введенной границы N все числа в разложении которых на простые числа не содержиться никаких множителей, кроме двоек, троек и пятерок.
Пример: Ввод: 30. Вывод: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30.


**2.**
a. Написать программу, принимающую строчку, состоящую только из знаков круглых скобок '(' и ')' и выводящую //**TRUE**// или //**FALSE**// в завмсимости от того, является ли это расстановка скобок допустимой.
    __**пример 1:**__ Ввод: " ( ( ( ) " Вывод: //**FALSE**//
    __**пример 2:**__ Ввод: " ) ( ( ) " Вывод: //**FALSE**//
    __**пример 3:**__ Ввод: " ( ( ( ) ) ( ) ) " Вывод: //**TRUE**//


b. Написать программу, принимающую строчку, состоящую только из знаков круглых скобок '(' и ')' и выводящую //**TRUE**// или //**FALSE**// в завмсимости от того, является ли это расстановка скобок допустимой. или может быть до нее продолжена.
    __**пример 1:**__ Ввод: " ( ( ( ) " Вывод: //**TRUE**//
    __**пример 2:**__ Ввод: " ) ( ( ) " Вывод: //**FALSE**//
    __**пример 3:**__ Ввод: " ( ( ( ) ) ( ) ) " Вывод: //**TRUE**//


c. Как a), но теперь с несколькими видами пар скобок, например, круглыми, квадратными, фигурными и угловыми.
    __**пример 1:**__ Ввод: " ( [ [ < > ] ( " Вывод: //**FALSE**//
    __**пример 2:**__ Ввод: " [ ( ] ) " Вывод: //**FALSE**//
    __**пример 3:**__ Ввод: " ( [ < > ] ( { } { } ) ) " Вывод: //**TRUE**//


d. Как b), но теперь с несколькими видами пар скобок, например, круглыми, квадратными, фигурными и угловыми.
    __**пример 1:**__ Ввод: " ( [ [ < > ] ( " Вывод: //**TRUE**//
    __**пример 2:**__ Ввод: " [ ( ] ) " Вывод: //**FALSE**//
    __**пример 3:**__ Ввод: " ( [ < > ] ( { } { } ) ) " Вывод: //**TRUE**//


**3.**
Вывести все простые числа до заданного //**N**// проверяя делимость очередного числа только на простые делители, для хранения которых используется динамическая память.

**4.**
"Считалка" (задача Иосифа Флавия) //**N**// человек выстраиваются по кругу и начинают счет по кругу с выбыванием каждого //**К**//-го. Надо определить номер оставшегося последним.
О том кто такой Иосиф Флавий и откуда взялась эта задача можно прочитать ((http://ru.wikipedia.org/wiki/%D0%98%D0%BE%D1%81%D0%B8%D1%84_%D0%A4%D0%BB%D0%B0%D0%B2%D0%B8%D0%B9 здесь.))

**5.**
Замена рекурсии с помощью //отложенных заданий//. На примере задачи о Ханойских башнях. Задание представлено тройкой (//**k**//, //**m**//, //**n**//), где //**k**// число дисков которые надо перенести с диска //**m**// на диск //**n**//. Если //**k**// = 1, то задание выполняется непосредственно, а если //**k**// > 1, то это задание заменяется на три задания (//**k-1**//, //**m**//, //**p**//) (//**1**//, //**m**//, //**n**//) (//**k-1**//, //**p**//, //**n**//).

**6.**
Парикмахерская.
a. Парикмахер стрижет клиентов в порядке их прихода. Требуется для каждого клиента указать время окончания его стрижки. Для простоты время везде задается в минутах с начала работы парикмахерской.
Входной файл: первая строчка: //**N**// - количество клиентов.Следующие //**N**// строчек относятся к каждому из клиентов (в порядке прихода). В строчке указывается ID клиента, время его прихода и сколько минут понадобится, чтобы его подстричь. Вывод производится в порядке возрастания времени начала обслуживания. При прочих равных условиях выбирается мастер с наименьшим номером.
Выходной файл: //**N**// строчек. в каждой из которых пара чисел: ID клиента и время окончания его стрижки.

b. Тоже самое что и в предыдущем пункте, только теперь работает не один мастер, а три. У каждого соответствующий номер. Они все работают с одинаковой скоростью. Клиент идет к любому свободному мастеру.
Входной файл такой же. В выходном в каждой строчке дополнительно указывется номер мастера у которого стригся клиент.

c. Тоже самое что и в предыдущем пункте, только вывод производится в порядке возрастания времени окончания стрижки.

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


----
адрес оригинала: ((/OnerXaum/Списки))