Списки

Упражнения

A: Треугольник Паскаля

По данному числу \(N\) выведите первые \(N + 1\) строку треугольника Паскаля. Числа в строке разделяйте одним пробелом.

Ввод Вывод
4
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

Указание. Стройте строки треугольника Паскаля последовательно. Заведите два списка: для хранения последней построенной строки треугольника Паскаля и следующей за ней.

B: Автомат со сдачей

Одна фирма обслуживает автоматы по продаже чая и кофе.

Стоимость стакана чая и кофе в автомате равна пяти рублям. Автомат принимает монеты по 5 и 10 рублей, а также купюры в 10, 50 и 100 рублей. Когда покупателю надо выдавать сдачу (т.е. когда пассажир бросил в автомат десятирублёвую монету или 10-, 50- или 100-рублёвую купюру), автомат выдаёт сдачу пятирублёвыми монетами; если же покупатель бросил в автомат пятирублёвую монету, то автомат её сохраняет и может использовать для сдачи следующим покупателям.

Ясно, что, чтобы обеспечить возможность выдачи сдачи всем покупателям, может потребоваться изначально загрузить в автомат некоторое количество пятирублёвых монет. Сейчас автоматы проходят испытания с целью определить минимальное количество монет, которые надо загрузить в автомат перед началом дня. Вам дан протокол одного из таких испытаний: известен порядок, в котором покупатели оплачивали свои покупки различными монетами и купюрами. Определите, какое минимальное количество пятирублёвых монет должно было изначально находиться в автомате, чтобы всем покупателям хватило сдачи.

В первой строке входных данных находится одно натуральное число \(N\) — количество покупок в автомате, которые были совершены в ходе испытания (\(1\leq N\leq 50\,000\)). Во второй строке находятся \(N\) натуральных чисел, каждое из которых равно номиналу монеты или купюры, которую использовал очередной покупатель для оплаты; каждый номинал может принимать одно из четырёх значений: 5, 10, 50 или 100.

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

Ввод Вывод
3
10 5 100
19
3
5 5 10
0
4
50 5 5 5
9

C: Тапочки

В прихожей в ряд стоит \(N\) тапочек, которые бывают разных размеров, а также левыми и правыми. Гость выбирает два тапочка, удовлетворяющих следующим условиям:

  1. Выбранные тапочки должны быть одного размера
  2. Из выбранных тапочков левый тапочек должен стоять левее правого
  3. Если можно выбрать несколько пар тапочек, удовлетворяющих первым двум условиям, то выбирается два тапочка с наименьшим расстоянием между ними

В первой строке входны данных записано число тапочков \(N\). Во второй строке записаны размеры тапочков в порядке слева направо, при этом левые тапочки условно обозначаются отрицательными числами (то есть \(-s\) обозначает левый тапочек, а \(s\) обозначает правый тапочек размера \(s\)).

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

Ввод Вывод
6
-40 41 -42 -41 42 40
2

В примере подходят тапочки 40 размера (расстояние между ними равно 5) и 42 размера (расстояние между ними равно 2).

D: Дома и магазины

На Новом проспекте построили подряд \(N\) зданий. Каждое здание может быть либо жилым домом, либо магазином, либо офисным зданием.

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

Первая строка входных данных содержит количество домов на Новом проспекте \(N\). Вторая строка содержит \(N\) чисел, разделенных пробелами. Каждое число задает тип здания на Новом проспекте: число 1 обозначает жилой дом, число 2 обозначает магазин, число 0 обозначает офисное здание. Гарантируется, что на Новом проспекте есть хотя бы один жилой дом и хотя бы один магазин.

Выведите одно целое число: наибольшее расстояние от дома до ближайшего к нему магазина. Расстояние между двумя соседними домами считается равным 1 (то есть если два дома стоят рядом, то между ними расстояние 1, если между двумя домами есть еще один дом, то расстояние между ними равно 2 и т.д.

Ввод Вывод
10
2 0 1 1 0 1 0 2 1 2
3

E: Симметричная последовательность

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

1 2 3 4 5 4 3 2 1

1 2 1 2 2 1 2 1

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

Программа получает на вход количество элементов исходной последовательности \(N\) \((1\le N\le 100)\). Далее идут \(N\) чисел — элементы этой последовательности, натуральные числа от 1 до 9.

Выведите сначала число \(M\) — минимальное количество элементов, которое надо дописать к последовательности, а потом \(M\) чисел (каждое от 1 до 9) — числа, которые надо дописать к последовательности.

Ввод Вывод
9
1 2 3 4 5 4 3 2 1
0
5
1 2 1 2 2
3
1 2 1
5
1 2 3 4 5
4
4 3 2 1

F: Задача Иосифа Флавия

\(N\) человек, пронумерованных числами от 1 до \(N\) стоят в кругу. Они начинают считаться, каждый \(K\)-й по счету человек выбывает из круга, после чего счет продолжается со следующего за ним человека.

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

Программа получает на вход числа \(N\) и \(K\) (\(1\le N\le 100\), \(1\le K\le 10^9\)). и должна вывести одно число от 1 до \(N\).

Ввод Вывод
5 7
4