Мы определим как список различных степеней 2, которые суммируются с x . Например, V ( 35 ) = [ 32 , 2 , 1 ] .
По соглашению, полномочия сортируются здесь от наивысшего к низшему. Но это не влияет ни на логику задачи, ни на ожидаемые решения.
задача
При заданном полупростом замените каждый член в V ( N ) другим списком степеней 2 , суммирующим этот термин, таким образом, чтобы объединение всех результирующих подсписков было точным покрытием матрицы M, определенной как:
где и Q являются главными факторами N .
Это гораздо легче понять на некоторых примерах.
Пример № 1
Для имеем:
- и V ( P ) = [ 4 , 2 , 1 ]
- и V ( Q ) = [ 2 , 1 ]
Чтобы превратить в точное покрытие M , мы можем разбить 16 на 8 + 4 + 4 и 4 на 2 + 2 , а 1 оставить без изменений. Таким образом, возможный вывод:
Еще один действительный вывод:
Пример № 2
Для имеем:
- и V ( P ) = [ 32 , 4 , 1 ]
- и V ( Q ) = [ 16 , 4 , 2 , 1 ]
Возможный вывод:
правила
- Поскольку факторизация не является основной частью задачи, вы можете попеременно принимать P и Q в качестве входных данных.
- Если существует несколько возможных решений, вы можете вернуть только одно из них или все из них.
- Вы можете поочередно возвращать показатели степени (например, вместо [ [ 8 , 4 , 4 ] , [ 2 , 2 ] , [ 1 ] ] ).
- Порядок подсписков не имеет значения, равно как и порядок терминов в каждом подсписке.
- Для некоторых полупримесов вам не придется разбивать какой-либо термин, потому что уже является идеальным прикрытием M (см. A235040 ). Но вам все равно придется возвращать список (одноэлементных) списков, таких как [ [ 8 ] , [ 4 ] , [ 2 ] , [ 1 ] ] для N = 15 .
- Это код-гольф !
Контрольные примеры
Input | Possible output
-------+-----------------------------------------------------------------------------
9 | [ [ 4, 2, 2 ], [ 1 ] ]
15 | [ [ 8 ], [ 4 ], [ 2 ], [ 1 ] ]
21 | [ [ 8, 4, 4 ], [ 2, 2 ], [ 1 ] ]
51 | [ [ 32 ], [ 16 ], [ 2 ], [ 1 ] ]
129 | [ [ 64, 32, 16, 8, 4, 2, 2 ], [ 1 ] ]
159 | [ [ 64, 32, 32 ], [ 16 ], [ 8 ], [ 4 ], [ 2 ], [ 1 ] ]
161 | [ [ 64, 32, 16, 16 ], [ 8, 8, 4, 4, 4, 2, 2 ], [ 1 ] ]
201 | [ [ 128 ], [ 64 ], [ 4, 2, 2 ], [ 1 ] ]
403 | [ [ 128, 64, 64 ], [ 32, 32, 16, 16, 16, 8, 8 ], [ 8, 4, 4 ], [ 2 ], [ 1 ] ]
851 | [ [ 512 ], [ 128, 64, 64 ], [ 32, 16, 16 ], [ 8, 4, 4 ], [ 2 ], [ 1 ] ]
2307 | [ [ 1024, 512, 512 ], [ 256 ], [ 2 ], [ 1 ] ]