Мы определяем бинарный массив как массив, удовлетворяющий следующим свойствам:
- это не пусто
- первое значение
1
- последнее значение
1
- все остальные значения либо
0
или1
Например, массив [ 1, 1, 0, 1 ]
является допустимым binarray .
Задание
Учитывая непустой массив A неотрицательных целых чисел и положительное целое число N , ваша задача состоит в том, чтобы найти двоичный массив B длины N, который позволяет генерировать A путем суммирования неограниченного числа копий B , сдвинутых на неограниченное число позиции.
пример
A = [ 1, 1, 2, 4, 1, 2, 2, 1, 0, 1, 0, 1, 1, 0, 1 ]
N = 4
Для этого ввода binarray B = [ 1, 1, 0, 1 ]
будет правильным ответом, потому что мы можем сделать:
[ 1, 1, 0, 1 ]
+ [ 1, 1, 0, 1 ]
+ [ 1, 1, 0, 1 ]
+ [ 1, 1, 0, 1 ]
+ [ 1, 1, 0, 1 ]
+ [ 1, 1, 0, 1 ]
-----------------------------------------------
= [ 1, 1, 2, 4, 1, 2, 2, 1, 0, 1, 0, 1, 1, 0, 1 ]
правила
- Входные данные могут быть приняты в любом разумном формате.
- Вывод может быть либо собственным массивом (например
[1, 1, 0, 1]
), либо двоичной строкой с разделителем или без него (например,"1,1,0,1"
или"1101"
) - Вам нужно только распечатать или вернуть один действительный бинарный массив . Кроме того, вы можете распечатать или вернуть их все, когда существует несколько решений.
- Вы не обязаны поддерживать материалы, которые не приводят к какому-либо решению.
- Сумма может включать в себя неявные нули , которые не пересекаются с любой копией B . Второй ноль в приведенной выше сумме является таким неявным нулем.
- Можно предположить, что максимальный размер A равен 100, а максимальный размер B равен 30.
- Это код-гольф, поэтому выигрывает самый короткий ответ в байтах. Стандартные лазейки запрещены.
Контрольные примеры
Input : N = 1 / A = [ 1, 2, 3, 4, 5 ]
Output: [ 1 ]
Input : N = 2 / A = [ 1, 2, 100, 99 ]
Output: [ 1, 1 ]
Input : N = 3 / A = [ 1, 1, 1 ]
Output: [ 1, 1, 1 ]
Input : N = 3 / A = [ 1, 1, 3, 2, 2 ]
Output: [ 1, 1, 1 ]
Input : N = 3 / A = [ 1, 0, 2, 1, 1, 1, 0, 0, 1, 0, 1 ]
Output: [ 1, 0, 1 ]
Input : N = 4 / A = [ 1, 2, 2, 2, 1 ]
Output: [ 1, 1, 1, 1 ]
Input : N = 4 / A = [ 1, 1, 2, 4, 1, 2, 2, 1, 0, 1, 0, 1, 1, 0, 1 ]
Output: [ 1, 1, 0, 1 ]
Input : N = 4 / A = [ 1, 1, 0, 2, 1, 0, 1 ]
Output: [ 1, 0, 0, 1 ] or [ 1, 1, 0, 1 ]
Input : N = 5 / A = [ 1, 3, 6, 9, 8, 6, 3, 4 ]
Output: [ 1, 1, 1, 0, 1 ]
Input : N = 8 / A = [ 2, 1, 0, 2, 3, 3, 1, 2, 1 ]
Output: [ 1, 0, 0, 1, 1, 1, 0, 1 ]
Input : N = 10 / A = [ 1, 2, 1, 2, 2, 1, 3, 3, 3, 2, 3, 0, 2, 1, 1, 0, 1 ]
Output: [ 1, 1, 0, 1, 0, 1, 1, 1, 0, 1 ]
Input : N = 13 / A = [ 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1 ]
Output: [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ]
Input : N = 5 / A = [ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 ]
Output: [ 1, 1, 1, 1, 1 ]
Input : N = 6 / A = [ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 ]
Output: [ 1, 0, 0, 0, 0, 1 ]
Input : N = 7 / A = [ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 ]
Output: [ 1, 1, 0, 0, 0, 1, 1 ]
Input : N = 9 / A = [ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1 ]
Output: [ 1, 0, 1, 0, 1, 0, 1, 0, 1 ]
N=4, A = [ 1, 1, 2, 4, 1, 2, 2, 2, 1, 2, 2, 1, 2, 0, 1 ]
вы получите 30459, который делится на 11 и 13, но только один из них [ 1, 1, 0, 1 ]
и [ 1, 0, 1, 1 ]
является правильным ответом.
N
этого должна обоснованно поддерживаться?