проблема
Давайте определим обобщенный набор Кантора путем итеративного удаления некоторых сегментов рациональной длины из середины всех интервалов, которые еще не были удалены, начиная с одного непрерывного интервала.
Учитывая относительную длину сегментов, которые нужно удалить или нет, и количество итераций, которые нужно сделать, проблема состоит в том, чтобы написать программу или функцию, которая выводит относительную длину сегментов, которые были или не были удалены после nитераций.
Пример: итеративно удалить 4-е и 6-е восьмое
Входные данные:
n - число итераций, индексируется начиная с 0 или 1
l- список длин сегментов в виде положительных целых чисел с gcd(l)=1нечетной длиной, представляющих относительную длину частей, которые либо остаются такими, какие они есть, либо удаляются, начиная с сегмента, который не удаляется. Поскольку длина списка нечетная, первый и последний сегменты никогда не удаляются. Например, для обычного набора Кантора это будет [1,1,1] для одной трети, которая остается, одна треть, которая удаляется, и снова одна треть, которая не удаляется.
Выход:
Целочисленный список o, gcd(o)=1относительной длины сегментов в nитерации, когда сегменты, которые не были удалены в предыдущей итерации, заменены уменьшенной копией списка l. Первая итерация просто [1]. Вы можете использовать любой однозначный метод вывода , даже унарный.
Примеры
n=0, l=[3,1,1,1,2] → [1]
n=1, l=[3,1,1,1,2] → [3, 1, 1, 1, 2]
n=2, l=[3,1,1,1,2] → [9,3,3,3,6,8,3,1,1,1,2,8,6,2,2,2,4]
n=3, l=[5,2,3] → [125,50,75,100,75,30,45,200,75,30,45,60,45,18,27]
n=3, l=[1,1,1] → [1,1,1,3,1,1,1,9,1,1,1,3,1,1,1]
Вы можете предположить, что ввод действителен. Это код-гольф , поэтому выигрывает самая короткая программа, измеряемая в байтах.

[0, 1, 2, 4, 6, 7]вместо[3, 1, 1, 1, 2]?